<t>I like to use properties in a class instead of methods, since they look more enum-like.<br/>
<br/>
Here's an example for a Logger:<br/>
<br/>
public class LogCategory<br/>
{<br/>
private LogCategory(string value) { Value = value; }<br/>
<br/>
public string Value { get; private set; }<br/>
<br/>
public static LogCategory Trace { get { return new LogCategory("Trace"); } }<br/>
public static LogCategory Debug { get { return new LogCategory("Debug"); } }<br/>
public static LogCategory Info { get { return new LogCategory("Info"); } }<br/>
public static LogCategory Warning { get { return new LogCategory("Warning"); } }<br/>
public static LogCategory Error { get { return new LogCategory("Error"); } }<br/>
<br/>
public override string ToString()<br/>
{<br/>
return Value;<br/>
}<br/>
}<br/>
<br/>
```<br/>
<br/>
Pass in **type-safe string values** as a parameter:<br/>
<br/>
```<br/>
public static void Write(string message, LogCategory logCategory)<br/>
{<br/>
var log = new LogEntry { Message = message };<br/>
Logger.Write(log, logCategory.Value);<br/>
}<br/>
<br/>
```<br/>
<br/>
Usage:<br/>
<br/>
```<br/>
Logger.Write("This is almost like an enum.", LogCategory.Info);<br/>
<br/>
```</t>