C# で列挙型と文字列を関連付ける 質問する

C# で列挙型と文字列を関連付ける 質問する

列挙型の型はintでなければならないため、以下は不可能だとわかっています。

enum GroupTypes
{
    TheGroup = "OEM",
    TheOtherGroup = "CMB"
}

データベースから、理解できないコード ( および ) を含むフィールドを取得しますOEMCMBこのフィールドを または他のわかりやすいものにしたいと思いますenum。目標が読みやすさである場合、解決策は簡潔である必要があるためです。

他にどんな選択肢がありますか?

ベストアンサー1

クラスでは、プロパティの方が列挙型のように見えるので、メソッドではなくプロパティを使用するのが好きです。

以下は Logger の例です。

public class LogCategory
{
    private LogCategory(string value) { Value = value; }

    public string Value { get; private set; }

    public static LogCategory Trace   { get { return new LogCategory("Trace"); } }
    public static LogCategory Debug   { get { return new LogCategory("Debug"); } }
    public static LogCategory Info    { get { return new LogCategory("Info"); } }
    public static LogCategory Warning { get { return new LogCategory("Warning"); } }
    public static LogCategory Error   { get { return new LogCategory("Error"); } }

    public override string ToString()
    {
        return Value;
    }
}

型安全な文字列値をパラメータとして渡します。

public static void Write(string message, LogCategory logCategory)
{
    var log = new LogEntry { Message = message };
    Logger.Write(log, logCategory.Value);
}

使用法:

Logger.Write("This is almost like an enum.", LogCategory.Info);

おすすめ記事