注意:我已经检查了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# - NET的[过时(string,bool)]属性的用途,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10821283/

10-11 04:19