System.Reflection.RuntimeReflectionExtensions中方法的目的是什么?

本文关键字:是什么 方法 Reflection RuntimeReflectionExtensions System | 更新日期: 2023-09-27 17:50:52

从。net 4.5(2012)开始,出现了一些新的扩展方法,来自System.Reflection.RuntimeReflectionExtensions类。然而,这些新方法似乎并没有给我们带来什么新东西。一个例子:

static void Main()
{
    var prop1 = typeof(string).GetProperty("Length");
    var prop2 = typeof(string).GetRuntimeProperty("Length");  // extension, needs: using System.Reflection;
    Console.WriteLine(prop1 == prop2);
    Action a = Main;
    var meth1 = a.Method;
    var meth2 = a.GetMethodInfo();  // extension, needs: using System.Reflection;
    Console.WriteLine(meth1 == meth2);
}

写入True两次。

(==运算符在这里是重载的,但即使检查与(object)prop1 == (object)prop2(object)meth1 == (object)meth2的引用是否相等,也会得到True)。

那么这些新的公开可见方法的目的是什么呢?很明显,我一定是忽略或误解了什么。

System.Reflection.RuntimeReflectionExtensions中方法的目的是什么?

GetRuntime*方法用于WinRT项目。由于WinRT使用的类型可能与。net使用的类型不同,但功能和名称仍然相同,因此这些反射方法确保返回正确的MemberInfo。如果你运行的是WinRT,你可能不希望在运行时使用。net MemberInfo。

参见汉斯·帕桑特对原问题的评论