过时属性混淆

发布于 2024-07-14 16:43:36 字数 809 浏览 8 评论 0原文

可能的重复:
为什么 C# 是集合属性调用它们的属性时没有被标记为过时?

我想将 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; } }
    }
}

Possible Duplicate:
Why are C# collection-properties not flagged as obsolete when calling properties on them?

I would like to apply ObsoleteAttribute to a property, but it seems that compiler generates warnings/errors only for direct usage of attribute, any indirect usage is silently ignored.

I think the following example illustrates the problem very well:

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; } }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陈甜 2024-07-21 16:43:36

我相信这是最新 C# 编译器 (C# 3.0) 中的一个已知错误。 StackOverflow 上还有另一个问题 与此问题相关。

I believe this is a known bug in the latest C# compiler (C# 3.0). There is another question on StackOverflow relating to this problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文