有谁可以告诉这两个属性之间的区别?
DeclaringType 和 ReflectedType
考虑代码是:
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);
    }
}
这些是否可以互换使用?
dca*_*tro 59
他们并不完全一样.
DeclaringType 返回声明方法的类型.ReflectedType返回Type用于检索方法的对象.这是一个演示:
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 { }
注意到最后一行如何打印Derived而不是Base.这是因为,即使Method是宣称的Base,我们用Derived获得的MemberInfo对象.
资料来源:MSDN
| 归档时间: | 
 | 
| 查看次数: | 8788 次 | 
| 最近记录: |