自定义编译器警告在.Net中使用ObsoleteAtribute时,它会为您提供编译器警告,告诉您对象/方法/属性已过时,应该使用其他东西。我目前正在开发一个需要大量重构前雇员代码的项目。我想编写一个自定义属性,我可以用它来标记将生成编译器警告的方法或属性,这些警告会给出我写的消息。像这样的东西[MyAttribute("This code sux and should be looked at")]public void DoEverything(){}<MyAttribute("This code sux and should be looked at")>Public Sub DoEverything()End Sub我想要生成一个编译器警告,上面写着“这段代码sux,应该看一下”。我知道如何创建自定义属性,问题是我如何使它在visual studio中生成编译器警告。
3 回答
动漫人物
TA贡献1815条经验 获得超10个赞
更新
现在可以使用Roslyn(Visual Studio 2015)。你可以建立一个代码分析器来检查自定义属性
我不相信这是可能的。ObsoleteAttribute由编译器专门处理,并在C#标准中定义。为什么ObsoleteAttribute不被接受?在我看来,这正是它所设计的情况,并准确地实现了您的需求!
另请注意,Visual Studio也会即时获取由ObsoleteAttribute生成的警告,这非常有用。
不要意味着无益,只是想知道你为什么不热衷于使用它...
不幸的是,ObsoleteAttribute是密封的(可能部分是由于特殊处理),因此您无法从中继承自己的属性。
从C#标准: -
属性Obsolete用于标记不再使用的类型和类型成员。
如果程序使用使用Obsolete属性修饰的类型或成员,则编译器会发出警告或错误。具体而言,如果未提供错误参数,或者提供了错误参数且值为false,则编译器会发出警告。如果指定了error参数并且值为true,则编译器会发出错误。
这不能总结你的需求吗?......你不会做得比我想象的更好。
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
在某些编译器中,您可以使用#warning发出警告:
#warning "Do not use ABC, which is deprecated. Use XYZ instead."
在Microsoft编译器中,您通常可以使用消息编译指示:
#pragma message ( "text" )
你提到过.Net,但没有说明你是用C / C ++还是用C#编程。如果您使用C#进行编程,那么您应该知道C#支持#warning格式。
- 3 回答
- 0 关注
- 302 浏览
添加回答
举报
0/150
提交
取消