c# – 用于.NET的[Obsolete(string,bool)]属性

前端之家收集整理的这篇文章主要介绍了c# – 用于.NET的[Obsolete(string,bool)]属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
注意:我已经检查过msdn,它没有解决我的实际问题,见下文.

我试图在我的一个类中的(显然是过时的)构造函数上使用过时的属性.这是场景:

我想要能够强制开发人员更新到新的构造函数,而不会影响已经存在的和部署的代码.这样,我可以将代码部署到生产中,但是从开发人员的角度来看,每当他们进入代码时,而不是仅仅得到一个“警告”,我确信他们会忽略,我希望他们得到一个编译错误,因为现状不再可以.

所以我的问题是,这会影响只有开发人员,还是所有调用应用程序,还是我有整个错误

示例代码

public class MyClass
{
   private string _userID; //new code

   [Obsolete("This constructor is obsolete,please use other constructor.",true)]
   public MyClass()
   {
      _userID = ""; //defaulting to empty string for all those using this constructor
   }

   public MyClass(string userID)
   {
      _userID = userID; //this is why they need to use this constructor
   }
}

任何和所有的帮助将不胜感激,谢谢提前!

解决方法

是的,这主要影响编译器 – 任何预构建的代码都不会受到影响,除非该代码显式检查此属性.例如,一些序列化代码(XmlSerializer,IIRC)检查这一点 – 所以它可能不是完全没有副作用的…但是,主要现有的代码通常不会受到影响,直到他们尝试下一个编译.

当然,如果您使用的是使用动态编译的代码(例如ASP.NET,无需预编译),则所有投注都将关闭.

猜你在找的C#相关文章