gpt4 book ai didi

c# - DeclaringType 和 ReflectedType 的区别

转载 作者:IT王子 更新时间:2023-10-29 03:59:01 33 4
gpt4 key购买 nike

谁能说出这两个属性之间的区别?

DeclaringTypeReflectedType

考虑代码是:

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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com