作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
谁能说出这两个属性之间的区别?
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);
}
}
这些是否相同并且可以互换使用?
最佳答案
它们并不完全相同。
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
关于c# - DeclaringType 和 ReflectedType 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21884142/
这是一个演示问题的简单测试: class MyBase { public int Foo { get; set; } } class MyClass : MyBase { } [TestM
谁能说出这两个属性之间的区别? DeclaringType 和 ReflectedType 考虑代码是: public class TestClass { public static void
我们如何替换 .NET Core 中的 MethodInfo.ReflectedType? 在 .NET Core 1.1 中 MethodInfo.ReflectedType 仍然不可用。 它有什么
我是一名优秀的程序员,十分优秀!