Create Generic method constraining T to an Enum

Since Enum Type implements IConvertible interface, a better implementation should be something like this: public T GetEnumFromString<T>(string value) where T : struct, IConvertible { if (!typeof(T).IsEnum) { throw new ArgumentException(“T must be an enumerated type”); } //… } This will still permit passing of value types implementing IConvertible. The chances are rare though.