为了账号安全,请及时绑定邮箱和手机立即绑定

自定义编译器警告

自定义编译器警告

C#
蝴蝶不菲 2019-09-03 12:05:04
自定义编译器警告在.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,则编译器会发出错误。

这不能总结你的需求吗?......你不会做得比我想象的更好。



查看完整回答
反对 回复 2019-09-09
?
慕尼黑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格式。



查看完整回答
反对 回复 2019-09-09
  • 3 回答
  • 0 关注
  • 302 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信