模拟.NET[过时]属性

模拟.NET[过时]属性,.net,visual-studio,attributes,.net,Visual Studio,Attributes,可能重复: 重复: 我不熟悉为.NET编写自己的属性,但希望编写一个行为类似于System.ObsoleteAttribute属性的属性——如果某个类/成员标记了该属性,我希望该类/成员的任何调用方生成警告 具体来说,我想创建一个[Unimplemented]属性——实际上在开发过程中使用它,而不是抛出NotImplementedException 是否有人知道如何让IDE实时评估它,并在调用[未实现]项时生成警告?否,obsoletateAttribute由符合CLI的编译器以非常特殊的方式

可能重复:

重复:

我不熟悉为.NET编写自己的属性,但希望编写一个行为类似于System.ObsoleteAttribute属性的属性——如果某个类/成员标记了该属性,我希望该类/成员的任何调用方生成警告

具体来说,我想创建一个[Unimplemented]属性——实际上在开发过程中使用它,而不是抛出NotImplementedException


是否有人知道如何让IDE实时评估它,并在调用[未实现]项时生成警告?

否,
obsoletateAttribute
由符合CLI的编译器以非常特殊的方式处理,因此无法模拟其行为<代码>#警告或
#错误
(请参阅)可能会起作用。

属性实际上什么都不做,它们基本上只是用一些元数据标记方法(或类或其他)。IDE/编译器进行处理,以决定在看到过时属性时要做什么


如果希望visual studio以这种方式处理另一个属性,则必须为visual studio编写自定义插件。

我可以问一下为什么要这样做吗?听起来你有一些未实现的特性,但你不想让它们抛出NotImplementedException?为什么不创建一个空代码块,其中可能有一个//todo:注释,以提醒自己尚未完成


顺便说一句,ReSharper中有一个很棒的功能叫做“Todo explorer”,它显示(和链接)到您所有的
//Todo:
注释(甚至
NotImplementedException
s)

这很令人失望;我希望它成为一个部门标准,并编写一个FxCop规则来强制执行它。NotImplementedException只有在您a:在运行时点击它,或者b:记住在签入之前搜索它时才有用。ObsoleteAttribute提供了一个更主动的提醒,提示存在空方法。也许我会采纳以下建议:并实现提供的FxCop规则……而[Observe]并不适用于未实现的类/成员。我们按预期使用它,因此从“未实施的过时产品”中过滤“真正的过时产品”不是一个好的解决方案