Describes the Typesafe enum pattern, i.e. a way for a class to behave as an enumeration yet be strongly typed such that casting something to that class throws an exception.
E.g. When receiving a request parameter from a ASP.NET Web API, if a field is of type enum, by default an invlid value will bind as an out of range integer It takes some plumbing to let the binding throw an exception that can be translated as a bad request response to the caller. A type safe enum provides safety in such scenarios.