微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/csharp/92724.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐