2

我创建了一个 Enum 并想从中读取文本值。枚举如下:

public enum MethodID
{
    /// <summary>
    /// The type of request being done. Inquiry.
    /// </summary>
    [EnumTextValue("01")]
    Inquiry,

    /// <summary>
    /// The type of request being done. Update
    /// </summary>
    [EnumTextValue("02")]
    Update,
}  

现在我想将 enum 的值分配给请求对象 methodID。我尝试了以下代码,但没有奏效:

request.ID = Enum.GetName(typeof(MethodID), MethodID.Inquiry);  

我想要的是将值“01”分配给我将从 Enum MethodID 获取的请求数据合同 (request.ID) 的数据成员。我将如何得到这个?请帮忙

4

2 回答 2

6

如果您只想获得 int 值,那么您可以将 enum 声明为

public enum MethodID
{
    [EnumTextValue("01")]
    Inquiry = 1,

    [EnumTextValue("02")]
    Update = 2,
}

然后使用强制转换为 int:

ind id = (int)MethodID.Inquiry;

如果您想从属性中获取字符串值,那么这是静态辅助方法

///<summary>
/// Allows the discovery of an enumeration text value based on the <c>EnumTextValueAttribute</c>
///</summary>
/// <param name="e">The enum to get the reader friendly text value for.</param>
/// <returns><see cref="System.String"/> </returns>
public static string GetEnumTextValue(Enum e)
{
    string ret = "";
    Type t = e.GetType();
    MemberInfo[] members = t.GetMember(e.ToString());
    if (members.Length == 1)
    {
        object[] attrs = members[0].GetCustomAttributes(typeof (EnumTextValueAttribute), false);
        if (attrs.Length == 1)
        {
            ret = ((EnumTextValueAttribute)attrs[0]).Text;
        }
    }
    return ret;
}
于 2012-07-25T07:20:16.600 回答
1

试试这个

    string myEnum = MethodID.Inquiry.ToString();

int value =  (int)MethodID.Inquiry;

有关如何添加自定义属性并在代码中使用它们的更多信息 http://blogs.msdn.com/b/abhinaba/archive/2005/10/20/c-enum-and-overriding-tostring-on-it。 aspx

于 2012-07-25T07:17:55.773 回答