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);  

私が望むのは、Enum MethodID からフェッチする要求データ コントラクト (request.ID) のデータ メンバーに値 "01" を割り当てることです。どうすればこれを入手できますか? 助けてください

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 に答える