在 .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 中生成编译器警告。
这值得一试。
您不能扩展 Obsolete,因为它是最终的,但也许您可以创建自己的属性,并将该类标记为已过时,如下所示:
[Obsolete("Should be refactored")]
public class MustRefactor: System.Attribute{}
然后,当您使用“MustRefactor”属性标记方法时,将显示编译警告。它会生成一个编译时警告,但错误消息看起来很有趣,您应该亲自看看并选择。这非常接近您想要实现的目标。
更新:
和这段代码 http://pastie.org/282556它会生成一个警告(不是很好,但我认为没有更好的东西)。
public class User
{
private String userName;
[TooManyArgs] // Will show warning: Try removing some arguments
public User(String userName)
{
this.userName = userName;
}
public String UserName
{
get { return userName; }
}
[MustRefactor] // will show warning: Refactor is needed Here
public override string ToString()
{
return "User: " + userName;
}
}
[Obsolete("Refactor is needed Here")]
public class MustRefactor : System.Attribute
{
}
[Obsolete("Try removing some arguments")]
public class TooManyArgs : System.Attribute
{
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)