Obsolete 属性将某个程序实体标记为一个建议不再使用的实体。每次使用被标记为已过时的实体时,随后将生成警告或错误,这取决于属性是如何配置的。例如:
[System.Obsolete("use class B")] class A { public void Method() { } } class B { [System.Obsolete("use NewMethod", true)] public void OldMethod() { } public void NewMethod() { } }
在此例中,Obsolete 属性应用于类 A 和方法 B.OldMethod。因为应用于 B.OldMethod 的属性构造函数的第二个参数设置为 true,所以此方法将导致编译器错误,而使用类 A 只会产生警告。但是,调用 B.NewMethod 既不产生警告也不产生错误。
向属性构造函数提供的作为第一个参数的字符串将显示为警告或错误的一部分。例如,当将它与前面的定义一起使用时,下面的代码将生成两个警告和一个错误:
// Generates 2 warnings: A a = new A(); // Generate no errors or warnings: B b = new B(); b.NewMethod(); // Generates an error, terminating compilation: b.OldMethod();
为类 A 产生两个警告:一个用于声明类引用,一个用于类构造函数。
可在不使用参数的情况下使用 Obsolete 属性,但要包括此项已过时的原因及改用什么项的建议。
Obsolete 属性是一个单用途属性,并且可应用于允许属性的任何实体。Obsolete 是 ObsoleteAttribute 的别名