【问题标题】:Creating an Instance in an AppDomain from a System.Type从 System.Type 在 AppDomain 中创建实例
【发布时间】:2014-07-07 14:04:03
【问题描述】:

我正在尝试在 AppDomain 中创建一个实例。因此,我可以为每个插件创建一个单独的 AppDomain,并在使用 Unload 方法关闭它们时正确处理它们。

到目前为止,我的所有插件都有一个 IEnumerator,我在它们之间循环执行以下代码。

Type temp = (Type)enumerator.Current;
AppDomain ad = AppDomain.CreateDomain(temp.FullName);
object obj = ad.CreateInstance(temp.Assembly.FullName, temp.FullName);

但它在第三行崩溃说它无法加载文件或程序集。

我以前用过:

object obj = Activator.CreateInstance((Type)enumerator.Current);

但发现我无法通过调用 base.dispose() 正确处理插件,这意味着服务调用处于打开状态,并且在服务返回时代码将继续执行。

是否可以根据类型创建应用域?

【问题讨论】:

  • 你为什么要自己做而不是使用maf?
  • 这是我构建插件的遗留代码,但在构建插件时我发现插件没有正确处理。老实说,除了它代表什么,我对 maf 了解不多

标签: c# plugins types appdomain


【解决方案1】:

好的,所以我发现了我的错误。它应该是:

object obj = ad.CreateInstanceFrom(temp.Assembly.Location, temp.FullName);

【讨论】:

    猜你喜欢
    • 2017-11-20
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多