.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
。
还有的GetTypeInfo
在System.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+时不需要经过这个框架。
值得注意的是,在.NET标准2.0中,你可以'typeof(object).GetMethod' – Evk
@Evk:Yup,会注意到这一点。 –
看来VS 2017.4搭配1.6。 – l33t