I usually forget the exact details on C# constraints when using generics.
One of the especially irritating things is that you cannot apply all the constraints you want.
Some built-in language features are covered by special types in the .NET framework class library, for instance enums.
Which means that code like this will not compile:
// Error 1 Constraint cannot be special class 'System.Enum'
public static T StringToEnum(string name) where T : System.Enum
{
return (T)Enum.Parse(typeof(T), name);
}
You need to replace it with the code below, which uses the fact that an enum is a ValueType (hence the struct constraint) implementing the interfaces IComparable, IFormattable and IConvertible constraints: Read the rest of this entry »





