Il n'est pas clair si vous voulez seulement le type de temps de compilation lorsque le champ est nul. Une méthode simple comme cela pourrait fonctionner:
public static class ReflectionExtensions
{
public static Type GetCompileTimeType<T>(this T obj)
{
return typeof(T);
}
}
Vous pouvez modifier ce vérifier nul et retourner le type réel si c'est ce que vous voulez. utilisation
:
class A { }
class B : A { }
class C
{
private A a1, a2;
public C()
{
a2 = new B();
Console.WriteLine(a1.GetCompileTimeType()); // null but prints A
Console.WriteLine(a2.GetCompileTimeType()); // actually a B but prints A
}
}
null n'est pas un type .. sa valeur. Le champ est toujours le même type indépendamment. Vous devriez vérifier null avant. –