1. ホーム
  2. c#

[解決済み】C#で列挙型と文字列を関連付ける

2022-04-15 11:41:55

質問

Enumerationの型はintでなければならないので、次のようなことができないことは分かっています。

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

私のデータベースから、理解しがたいコードを持つフィールド ( OEMCMB s). このフィールドを enum などと理解しやすいように 読みやすさをターゲットとするならば、解決策は簡潔であるべきだからです。

他にどんな選択肢があるのでしょうか?

解決方法は?

を使いたいのですが プロパティをクラスで使用します。 メソッドの代わりに、より列挙型に見えるからです。

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