Hallo, ich habe ein Problem. Ich möchte über reflection die generischen Parameter und deren Einschränkungen ermitteln, um zu bestimmen, welche Typen als Parameter erlaubt sind.
Aber wie unterscheide ich zwischen, gar keiner Einschränkung und class als Einschränkung?
Ich habe hier mal ein kleines Testprogramm geschrieben, aber zwischen gar keiner Einschränkung und class als Einschränkung, sehe ich überhaupt keinen Unterschied, oder übersehe ich was?
public class Test<T0, T1, T2, T3, T4, T5>
where T1 : class
where T2 : struct
where T3 : ICloneable
where T4 : BinaryReader
where T5 : List<int>
{
}
static void Main(string[] args)
{
Type type = typeof(Test<,,,,,>);
Type[] genericArguments = type.GetGenericArguments();
foreach (Type genericArgument in genericArguments)
{
string name = genericArgument.Name;
Type baseType = genericArgument.BaseType;
Type[] baseInterfaces = genericArgument.GetInterfaces();
bool isClass = genericArgument.IsClass;
bool isAnsiClass = genericArgument.IsAnsiClass;
bool isStruct = genericArgument.IsValueType;
bool isInterface = genericArgument.IsInterface;
Type[] constraints = genericArgument.GetGenericParameterConstraints();
}
}