给定以下枚举:
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/