c# .net-4.0

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 objeto Type 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?