Boris Callens Boris Callens - 2 months ago 5
C# Question

Associating enums with strings in C#

I know the following is not possible because it has to be an int

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

From my database I get a field with incomprehensive codes (the OEM and CMB's). I would want to make this field into an enum or something else understandable. Because the target is readability the solution should be terse.

What other options do I have?


I like to use properties in a class instead of methods, since they look more enum-like.

Here's a example for a Logger:

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

 public string Value { get; 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"); } }

Pass in type-safe string values as a parameter:

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