可能重复:
Why are C# collection-properties not flagged as obsolete when calling properties on them?
我想将ObsoleteAttribute应用于属性,但似乎编译器仅为直接使用属性生成警告/错误,任何间接使用都会被忽略。
我认为以下示例很好地说明了问题:
using System;
class Program
{
static void Main(string[] args)
{
var o = new Old();
Console.WriteLine(o.Geezer); // compilation fails: 'ObsoleteAttributeTest.Program.Old.Geezer' is obsolete: 'Some error'
Console.WriteLine(o.Geezer.Attributes); // compiles OK
}
class Old
{
[ObsoleteAttribute("Some error", true)]
public System.Xml.XmlElement Geezer { get { return null; } }
}
}
答案 0 :(得分:1)
我相信这是最新C#编译器(C#3.0)中的已知错误。 another question on StackOverflow与此问题有关。
答案 1 :(得分:0)
var o = new Old();抛出错误。 错误CS0246:找不到类型或命名空间名称'var'(您是否缺少using指令或程序集引用?) 如果我们将其更改为Old o = new Old(); 仍然第二行抛出错误就像 错误CS0619:'Program.Old.Geezer'已过时:'有些错误' 。 我什么时候去这里.. !!!!!!!!!!