c# - Diferencia entre DeclaringType y ReflectedType
.net-4.0 (1)
No son exactamente lo mismo.
-
DeclaringType
devuelve el tipo que declara el método. -
ReflectedType
devuelve el objetoType
que se utilizó para recuperar el método.
Aquí hay una demostración:
MemberInfo m1 = typeof(Base).GetMethod("Method");
MemberInfo m2 = typeof(Derived).GetMethod("Method");
Console.WriteLine(m1.DeclaringType); //Base
Console.WriteLine(m1.ReflectedType); //Base
Console.WriteLine(m2.DeclaringType); //Base
Console.WriteLine(m2.ReflectedType); //Derived
public class Base
{
public void Method() {}
}
public class Derived : Base { }
Noté cómo la última línea impresa Derived
lugar de Base
. Esto se debe a que, aunque Method
declarado en Base
, utilizamos Derived
para obtener el objeto MemberInfo
.
Fuente: MSDN
¿Alguien podría decir la diferencia entre estas 2 propiedades?
DeclaringType
y ReflectedType
Considera que el código es:
public class TestClass
{
public static void TestMethod()
{
Console.WriteLine("Method in Class", MethodBase.GetCurrentMethod().DeclaringType.Name);
Console.WriteLine("Method in Class", MethodBase.GetCurrentMethod().ReflectedType.Name);
}
}
¿Son estos mismos y se pueden usar indistintamente?