C# pattern for a robust Java-style enum