c# – 用于.NET的[Obsolete(string,bool)]属性
发布时间:2020-12-15 04:07:09 所属栏目:百科 来源:网络整理
导读:注意:我已经检查过msdn,它没有解决我的实际问题,见下文. 我试图在我的一个类中的(显然是过时的)构造函数上使用过时的属性.这是场景: 我想要能够强制开发人员更新到新的构造函数,而不会影响已经存在的和部署的代码.这样,我可以将代码部署到生产中,但是从开
注意:我已经检查过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,无需预编译),则所有投注都将关闭. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |