【问题标题】:Enum deprecated c#枚举已弃用 c#
【发布时间】:2012-01-25 04:48:10
【问题描述】:

我有一个已弃用(已过时)的函数,它返回一个枚举,我有一个新函数,它返回一个枚举列表。

其中一个枚举值仅在已弃用的函数中使用,因此是否可以将枚举成员设置为过时(因为它不能在列表)?

【问题讨论】:

  • 您是否尝试过使用ObsoleteAttribute
  • 需要看一些代码...
  • @BoltClock 为什么?我只想将枚举设置为过时...

标签: c# .net enums


【解决方案1】:

实际上,可能会生成编译器警告或编译器错误。

public enum TestEnum
{
    A,
    [Obsolete("Not in use anymore")]
    B,
    [Obsolete("Not in use anymore", true)]
    C,
}

public class Class1
{
    public void TestMethod()
    {
        TestEnum t1 = TestEnum.A; //Works just fine.
        TestEnum t2 = TestEnum.B; //Will still compile, but generates a warning.
        TestEnum t3 = TestEnum.C; //Will no longer compile. 
    }
}

这将在您使用 [Obsolete] 属性的任何地方起作用。

【讨论】:

    【解决方案2】:

    我没有在枚举上尝试过这个,但是这样的东西可能会起作用:

    [Obsolete("Please use ... instead!")]
    public enum MyEnum
    {
      One,
      Two,
      Three
    }
    

    【讨论】:

    • 我建议您在发布猜测之前等待几天或几周的时间,让真正的答案出现。实际上,为什么不测试您的猜测而不是发布它,这样您就可以发布一个真实的答案或什么都不发布。
    • 显然将Obsolete 属性放在整个enum 上与将其放在单个值上不同。似乎 OP 想要排除特定的 enum 值。
    【解决方案3】:

    当然,你可以:

    public enum EE
    {
        A,
    
        [Obsolete]
        B
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 2010-11-26
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      相关资源
      最近更新 更多