C#:有没有办法对枚举进行分类?

标签 c# enums classification

给定以下枚举:

    public enum Position
    {
        Quarterback,
        Runningback,
        DefensiveEnd,
        Linebacker
    };

是否可以对命名常量进行分类,以便我可以将“Quarterback”和“Runningback”标记为进攻位置,将“DefensiveEnd”和“Linebacker”标记为防守位置?

最佳答案

您可以使用属性:

public enum Position
{
    [OffensivePosition]
    Quarterback,
    [OffensivePosition]
    Runningback,
    [DefensivePosition]
    DefensiveEnd,
    [DefensivePosition]
    Linebacker
};

然后在适当的 FieldInfo 上检查 IsDefined。语法不是很漂亮,但是您可以添加一些扩展方法来使事情更易于管理:

public static bool IsOffensivePosition(PositionType pt)
{
    return typeof(PositionType).GetField(Enum.GetName(typeof(PositionType), pt)).
        IsDefined(typeof(OffensivePositionAttribute), false);
}

关于C#:有没有办法对枚举进行分类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2109969/

相关文章:

c# - 展望互操作 : how to get deleted items folder or trash folder for each of the accounts

c# - WPF 控件可见性

c# - EF6 忽略(NotMapped)所有枚举类型属性

swift - "Raw value for enum case is not unique"用于具有 Float 原始值的 Swift 枚举

R预测函数类型="class"错误

r - 错误: `data` and `reference` should be factors with the same levels

c# - 使用 ELMAH 配置自定义授权

c# - 回滚由 Fluent NHibernate 中的 PersistenceSpecifications 创建的记录

javascript - 继续 JavaScript "classes"- 枚举

python-2.7 - 使用 sklearn 中的 OneVsRestClassifier 将定制的二元分类调整为多类分类