Reflecting on ParameterInfo for Generic class when ContainsGenericParameter is FALSE will return null
using System;
using System.Reflection;
public class MyClass<T>
{
public delegate T MyDelegate();
public MyClass(MyDelegate del){}
}
public class Program
{
public static void Main()
{
Type type = typeof(MyClass<>);
if(type == null)
{
Console.WriteLine("Type is: NULL");
}
else
{
Console.WriteLine("Type is: " + type.ToString());
}
ConstructorInfo constructor = type.GetConstructors()[0];
if(constructor == null)
{
Console.WriteLine("ConstructorInfo is: Null");
}
else
{
Console.WriteLine("ConstrutorInfo is: "+constructor.ToString());
}
ParameterInfo parameter = constructor.GetParameters()[0];
if(parameter == null)
Console.WriteLine("ParameterInfo is: Null");
else
Console.WriteLine("Parameterinfo is: "+parameter.ToString());
if(parameter.ParameterType.ContainsGenericParameters == false)
{
Console.WriteLine("FullName of Parameter type will be null:"+parameter.ParameterType.FullName);
}
else
{
Console.WriteLine("FullName of Parameter type:"+parameter.ParameterType.FullName);
}
}
}
The above code demonstrates that Reflecting on a Generic parameter when its ContainsGenericParameter value is false will return a null value in FullName. When the type of the paramter is well defined the FullName will return the appropriate value.