Associer des enums avec des chaines en C#

Associer des enums avec des chaines en C#

Nous aimons utiliser des proprietes dans une classe au lieu de methodes, car elles ressemblent davantage a un enum.

Voici un exemple pour un 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;
    }
}

Passez des valeurs de chaine type-safe comme parametre :

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

Utilisation :

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