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,无需预编译),则所有投注都将关闭.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...