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);
+ }
}
}