The type shall not be one of the following types: System.Array, System.Delegate, System.Enum, or System.ValueType. The type shall not be object. At most one constraint for a given type parameter may be a class type.