ホームページ >バックエンド開発 >C++ >c#で列挙値の文字列表現を取得する方法は?

c#で列挙値の文字列表現を取得する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-29 08:23:10512ブラウズ

How to Get String Representation of Enum Values in C#?

列列の文字列表現次の列挙を考慮してください。

ただし、認証methodを要求するときに文字列「フォーム」が必要です。フォーム、1のIDではありません。このstringvalueを取得するには、次のことが必要です。
public enum AuthenticationMethod
{
    FORMS = 1,
    WINDOWSAUTHENTICATION = 2,
    SINGLESIGNON = 3
}

このソリューションでは、次のような列挙の文字列値を取得できます。より良い解決策は、タイプセーフエナムパターン:

public class StringValue : System.Attribute
{
    private readonly string _value;

    public StringValue(string value)
    {
        _value = value;
    }

    public string Value
    {
        get { return _value; }
    }

}
明示的な(または暗黙的な)タイプ変換の場合、マッピングで静的フィールドを追加し、インスタンスコンストラクターのマッピングを入力し、ユーザーを追加します。定義されたタイプ変換演算子:

< pre> private static readonly dictionary< string、authenticationmethod> instance = new Dictionary< string、authenticationmethod>();
public enum AuthenticationMethod
{
    [StringValue("FORMS")]
    FORMS = 1,
    [StringValue("WINDOWS")]
    WINDOWSAUTHENTICATION = 2,
    [StringValue("SSO")]
    SINGLESIGNON = 3
}
instance [name] = this;

public static explicit operator exhinticationmethod(string str)

{
public static class StringEnum
{
    public static string GetStringValue(Enum value)
    {
        string output = null;
        Type type = value.GetType();

        // Look for our 'StringValueAttribute' in the field's custom attributes
        FieldInfo fi = type.GetField(value.ToString());
        StringValue[] attrs = fi.GetCustomAttributes(typeof(StringValue), false) as StringValue[];
        if (attrs.Length > 0)
        {
            output = attrs[0].Value;
        }

        return output;
    }
}
>

}< /pre>
string valueOfAuthenticationMethod = StringEnum.GetStringValue(AuthenticationMethod.FORMS);

以上がc#で列挙値の文字列表現を取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。