为了进行跨平台开发,我正在尝试创建一个 .NET Core 共享库。我在 VS 2015 中使用了 Class Library (package)
项目模板。我的库需要使用一些反射机制,这些反射机制来自于完整的 .net 4 框架,但我不知道如何在 .NET Core 库中访问这些机制。具体而言:
Delegate
类型有一个返回MethodInfo
对象的Method
属性。Type
类有一个BaseType
属性、FilterName
属性、InvokeMember
方法和FindMembers
方法,在 .NET Core 中我无法访问这些属性与方法。
我添加了 NuGet 软件包,声称其中包含我需要的反射部分:
"frameworks": {
"net451": {
"dependencies": {
"System.Reflection": "4.1.0-beta-23516",
"System.Reflection.Extensions": "4.0.1-beta-23516",
"System.Reflection.Primitives": "4.0.1-beta-23516",
}
},
"dotnet5.4": {
"dependencies": {
"Microsoft.CSharp": "4.0.1-beta-23516",
"System.Collections": "4.0.11-beta-23516",
"System.Linq": "4.0.1-beta-23516",
"System.Reflection": "4.1.0-beta-23516",
"System.Reflection.Extensions": "4.0.1-beta-23516",
"System.Reflection.Primitives": "4.0.1-beta-23516",
"System.Runtime": "4.0.21-beta-23516",
"System.Threading": "4.0.11-beta-23516"
}
}
},
"dependencies": {
"System.Reflection.TypeExtensions": "4.1.0-beta-23516"
}
我已经添加了 using System.Reflection
,但是我仍然收到错误提示,指出这些属性和类型未定义。
我做错了什么?
如果相关的话,在这台计算机上运行 dnvm list
命令会显示:
Active Version Runtime Architecture OperatingSystem Alias
------ ------- ------- ------------ --------------- -----
1.0.0-rc1-update1 clr x64 win
1.0.0-rc1-update1 clr x86 win
1.0.0-rc1-update1 coreclr x64 win
* 1.0.0-rc1-update1 coreclr x86 win default
以上正是我想要的......或者至少是我认为我想要的。 ;)
BaseType
,您可以使用type.GetTypeInfo().BaseType
,这是自WinRT/UWP以来它被移动到的位置(大致上是.NET Core所基于的System.Runtime
)。许多标准调用已在GetTypeInfo()
和类似方法之后删除。 - Tseng