小编典典

在 C# 中将枚举与字符串相关联

all

我知道以下是不可能的,因为枚举的类型必须是 int

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

从我的数据库中,我得到一个包含不全面代码(theOEMCMBs)的字段。我想把这个领域变成一个enum或其他可以理解的东西。因为如果目标是可读性,那么解决方案应该是简洁的。

我还有什么其他选择?


阅读 111

收藏
2022-03-11

共1个答案

小编典典

我喜欢 在类中使用属​​性 而不是方法,因为它们看起来更像枚举。

这是记录器的示例:

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);
2022-03-11