在.NetCore实现插件系统的时候,发现某些方法与在.NetFramework内的使用方法不一样,在此做一个记录供以后查阅。
NO.1 Assembly.Load
与 AssemblyLoadContext.Default.LoadFromXXX
在.NetFramework当中,如果要加载某一个程序集的话,通过Assembly的Load的各种重载方法即可通过文件流、文件路
径等方式将其加载到当前调用方的应用程序域当中。但是在.Net Core当中则不然,它并没有在Assembly当中提供Load
方法供开发人员操作,而你则需要在Nuget里面对当前项目安装System.Runtime.Loader
,然后使用其提供的
AssemblyLoadContext来进行程序集加载。
引用自OSChina的一篇资讯:
App Domain
App Domain在CoreCLR中得以实现,但没有在.NET Native中实现。由于对App Domain的实现需要大量的运行时特性支持,因此目前还没有任何对它的支持计划。“对于代码的隔离,我们建议通过进程或容器实现。而对于程序集的动态加 载,我们建议使用新的AssemblyLoadContext类。”
例如以下代码:
|
|
NO.2 GetCustomAttribute() 扩展支持
在.NetFramework当中,GetCustomAttribute()方法是针对Type与TypeInfo对象的,但是在.NetCore当中如果要调用这个 方法的话,则仅能通过Type.GetTypeInfo().GetCustomAttribute()来获得对象的特性标签。
NO.3 GetInterface与GetInterfaces方法
貌似在.NetCore当中的Type对象是没有Getinterface方法的,So…你只有使用后者获得一个IEnumerable对象再来筛选啦。