是否存在与ObsoleteAttribute相反的属性
本文关键字:属性 ObsoleteAttribute 存在 是否 | 更新日期: 2023-09-27 18:15:37
换句话说,是否存在一个Attribute
标记一段代码不是太旧,而是太新的,因此还没有准备好广泛使用?
如果我必须创建一个自定义Attribute
来完成这一点,那很好。我只是想先确认一下
不,这没有标准化。你可能想要考虑不像那样暴露代码——或者只在测试版中暴露它等等。
不是属性,但是我们可以使用预处理器指令(https://msdn.microsoft.com/en-us/library/ed8yd1ha.aspx)将代码区域标记为"太新"而不能运行。基本上,你可以定义一个标志来表示这段代码准备好了。
下面是一个例子:
#define FOREST_CAN_RUN
//undef FOREST_CAN_RUN --> disable that feature
using System;
namespace Test
{
public class Forest
{
public void Run()
{
#if FOREST_CAN_RUN
Console.Write("Run Forest, Run !");
#else
Console.Write("Sorry, Jenny");
#endif
}
}
public class Program
{
static void Main(string[] args)
{
Forest f= new Forest ();
f.Run();
}
}
}
自从。net 6有RequiresPreviewFeaturesAttribute
可以用于这个目标。实际上,它被用于。net 6的通用数学预览。来自。net 6的预览功能-泛型数学:
其他一切的中心是新的
RequiresPreviewFeatures
属性和相应的分析器。该属性允许我们在现有类型上注释新的预览类型和新的预览成员。有了这个功能,我们可以在支持的主版本中发布一个不支持的预览特性。
请注意,目前它是由。net团队使用的,并且没有一种方法来区分功能(它要么启用所有功能,要么禁用所有功能),但从理论上讲,推出一个带有自定义Roslyn分析器的自定义功能应该不是那么困难,它将能够区分功能(例如使用类似的方法-使用命名功能的子集合添加到.csproj相应的自定义部分)。