假设我在不同的 dll 中有 3 个抽象级别,组成我的应用程序
- 原始
- 基本实现 Primitive
- Foo 实现 Basic
而我的应用程序动态加载了Foo(Assembly.Load, Activator...),默认调用的是CurrentDomain_AssemblyResolve事件,因为他找不到Basic类的实现所以我可以输入正确的路径来加载Basic类。
根据我的业务运营,我的应用程序必须在 100% 的时间内处于活动状态。但是我可能会更改 Foo 的实现(无论是通过错误修复还是更改功能)所以,我要做的是更改 dll 的路径(配置),并且下次调用此函数时使用“另一个” Foo .
它工作得很好,但是如果我需要再次加载另一个 Basic 类(在这种情况下我将重新编译 Basic 和 Foo),我必须重新启动应用程序,有一种方法可以指示我去时使用哪个抽象实例化一个新的 Foo?
我知道程序集永远不会被释放(旧版本),但这对我来说不是问题。