如何在运行时添加其他逻辑以进行类型解析?

时间:2020-03-06 14:36:50  来源:igfitidea点击:

如果找不到该类型,是否有一种通用方法可以在不创建和管理自己的CLR主机的情况下接管查找和加载类型?

以下仅是示例。当我们急于成为第一个答案时,请勿建议使用新的加载项框架或者MEF作为我问题的解决方案。

一个示例是带有加载项的示例。应用读取了一个文件,其中列出了用于特定功能的类型。该应用程序尝试实例化这些类型。如果当前尚未将它们加载到appdomain中,则该方法将失败。我正在寻找一个我可以处理的事件或者一个我可以提供自己的实现的组件,这将使我能够优雅地处理这些情况并提供用于加载这些程序集的其他逻辑。

据我所知(除非有人有一个可行的例子),到目前为止,找不到类型都不会触发到目前为止提到的AppDomain事件。

等等,显然这是可行的!不知道我以前做错了什么,但是这个事件很好。

解决方案

我们可以使用AppDomain上的事件。

我们可能需要TypeResolve事件,可能还需要AssemblyResolve事件。

另外,我们可以阅读有关.net运行时如何解析程序集的更多信息,因此可以在"探测"部分中定义此信息。

仅使用AppDomain事件是不可能的吗?