diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Versioning/RequiresPreviewFeaturesAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Versioning/RequiresPreviewFeaturesAttribute.cs index 173ac200d440fe..7ccea51e0c2823 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Versioning/RequiresPreviewFeaturesAttribute.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Versioning/RequiresPreviewFeaturesAttribute.cs @@ -17,6 +17,28 @@ namespace System.Runtime.Versioning AttributeTargets.Event, Inherited = false)] public sealed class RequiresPreviewFeaturesAttribute : Attribute { + /// + /// Initializes a new instance of the class. + /// public RequiresPreviewFeaturesAttribute() { } + + /// + /// Initializes a new instance of the class with the specified message. + /// + /// An optional message associated with this attribute instance. + public RequiresPreviewFeaturesAttribute(string? message) + { + Message = message; + } + + /// + /// Returns the optional message associated with this attribute instance. + /// + public string? Message { get; } + + /// + /// Returns the optional URL associated with this attribute instance. + /// + public string? Url { get; set; } } } diff --git a/src/libraries/System.Runtime/ref/System.Runtime.cs b/src/libraries/System.Runtime/ref/System.Runtime.cs index 38bf0b19778cd2..1bd3d5fdbbc0ce 100644 --- a/src/libraries/System.Runtime/ref/System.Runtime.cs +++ b/src/libraries/System.Runtime/ref/System.Runtime.cs @@ -13612,6 +13612,9 @@ private protected OSPlatformAttribute(string platformName) { } public sealed partial class RequiresPreviewFeaturesAttribute : System.Attribute { public RequiresPreviewFeaturesAttribute() { } + public RequiresPreviewFeaturesAttribute(string? message) { } + public string? Message { get { throw null; } } + public string? Url { get { throw null; } set { } } } [System.AttributeUsageAttribute(System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.Property, Inherited=false)] [System.Diagnostics.ConditionalAttribute("RESOURCE_ANNOTATION_WORK")] diff --git a/src/libraries/System.Runtime/tests/System/Runtime/Versioning/RequiresPreviewFeaturesAttributeTests.cs b/src/libraries/System.Runtime/tests/System/Runtime/Versioning/RequiresPreviewFeaturesAttributeTests.cs index a0ae548a722726..1751b90a576905 100644 --- a/src/libraries/System.Runtime/tests/System/Runtime/Versioning/RequiresPreviewFeaturesAttributeTests.cs +++ b/src/libraries/System.Runtime/tests/System/Runtime/Versioning/RequiresPreviewFeaturesAttributeTests.cs @@ -12,5 +12,35 @@ public void RequiresPreviewFeaturesAttributeTest() { new RequiresPreviewFeaturesAttribute(); } + + [Fact] + public static void Ctor_Default() + { + var attribute = new RequiresPreviewFeaturesAttribute(); + Assert.Null(attribute.Message); + Assert.Null(attribute.Url); + } + + [Theory] + [InlineData(null)] + [InlineData("")] + [InlineData("message")] + public void Ctor_String_Message(string message) + { + var attribute = new RequiresPreviewFeaturesAttribute(message); + Assert.Same(message, attribute.Message); + Assert.Null(attribute.Url); + } + + [Theory] + [InlineData(null, "")] + [InlineData("", null)] + [InlineData("message", "https://aka.ms/preview-features/")] + public void Ctor_String_Url(string message, string url) + { + var attribute = new RequiresPreviewFeaturesAttribute(message) { Url = url }; + Assert.Same(message, attribute.Message); + Assert.Same(url, attribute.Url); + } } }