.NET Standard

时间:2017-10-16 11:35:29

标签: c# .net-standard

.NET Framework中,您可以轻松地反映方法。 E.g:

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

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

  

错误CS1061:'输入'不包含' GetMethod'的定义和   没有扩展方法' GetMethod'接受第一个类型的参数   '类型'可以找到(你是否错过了使用指令或   装配参考?)

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

1 个答案:

答案 0 :(得分:8)

对于.NET Core 1.x中几乎所有反射,您需要TypeInfo而不是Type

GetTypeInfo命名空间中有System.Reflection的扩展方法,因此您需要:

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

请注意,TypeInfo.GetMethod()不存在早于1.6的.NET Standard,但TypeInfo.DeclaredMethods自1.0以来就已存在。

.NET Standard 2.0将成员重新引入System.Type(作为将大部分桌面框架恢复到.NET Standard中的一部分),因此在定位2.0 +时无需通过此环节。