好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#枚举通过值获取ID的方法

在C#中,你可以通过反射来获取枚举值的属性。以下是一个简单的例子,展示了如何根据枚举值获取其关联的ID。

首先,定义一个带有ID属性的枚举:

public enum MyEnum

{

    [ID(1)]

    Value1,

    [ID(2)]

    Value2,

    [ID(3)]

    Value3

}

public class IDAttribute : Attribute

{

    public int ID { get; private set; }

    public IDAttribute(int id)

    {

        ID = id;

    }

}

然后,编写一个方法来获取指定枚举值的ID:

public static int GetIdByEnumValue(Enum value)

{

    Type type = value.GetType();

    MemberInfo[] members = type.GetMember(value.ToString());

    if (members.Length > 0)

    {

        object[] attributes = members[0].GetCustomAttributes(typeof(IDAttribute), false);

        if (attributes.Length > 0)

        {

            return ((IDAttribute)attributes[0]).ID;

        }

    }

    throw new ArgumentException("The specified enum value does not have an ID attribute.");

}

使用这个方法:

int id = GetIdByEnumValue(MyEnum.Value1); // 返回1

这个方法通过枚举值的名称查找对应的成员信息,然后获取关联的IDAttribute,并返回其ID。如果找不到IDAttribute,它将抛出一个异常。


查看更多关于C#枚举通过值获取ID的方法的详细内容...

  阅读:23次