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

标签 c# .net

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

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

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

我还有哪些其他选择?

最佳答案

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

这是一个记录器的例子:

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

关于c# - 在 C# 中将枚举与字符串相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/630803/

相关文章:

c# - 从 MemberExpression 和 Constant 创建 Func<T, bool>

.net - .NET 4.0线程池中有哪些改进?

c# - 异常会传回调用方法吗?

c# - 基于winforms中的鼠标单击查找到对象的最短距离

c# - 如果 XElement 上不存在 XAttribute 默认值

c# - 如何在 monodevelop 中运行组合命令

c# - Microsoft XNA Game Studio 的替代品?

c# - XNA,更流畅的跳跃动画

c# - 颜色空间之间的颜色转换

c# - 从 Azure 共享网站创建 Azure 媒体服务作业