.NET标准中的GetMethod等效标准

问题描述:

.NET Framework中,您可以轻松地反映方法。例如:.NET标准中的GetMethod等效标准

var methodInfo = typeof(object).GetMethod("MemberwiseClone", bindingFlags); 

.NET Standard项目,然而,编译器会抱怨:

错误CS1061: '类型' 不包含定义 'GetMethod' 和 没有扩展方法 'GetMethod' 接受类型 “类型”第一个参数可以找到(是否缺少using指令或程序 集引用?)

问:你如何使用.NET Standard进行等效反射?

对于差不多所有在.NET Core 1.x中的反思,您需要一个TypeInfo而不是Type

还有的GetTypeInfoSystem.Reflection命名空间的扩展方法,让你想:

using System.Reflection; // For GetTypeInfo 
... 
var methodInfo = typeof(object).GetTypeInfo().GetMethod("MemberwiseClone", bindingFlags); 

注意TypeInfo.GetMethod()不存在.NET标准早于1.6,但由于1.0 TypeInfo.DeclaredMethods一直英寸

.NET Standard 2.0将成员重新引入到System.Type(作为将桌面框架的大部分恢复到.NET标准中的一部分),因此在瞄准2.0+时不需要经过这个框架。

+1

值得注意的是,在.NET标准2.0中,你可以'typeof(object).GetMethod' – Evk

+0

@Evk:Yup,会注意到这一点。 –

+0

看来VS 2017.4搭配1.6。 – l33t