【问题标题】:Is there an alternative to AppDomain.CreateInstanceAndUnnrwap?AppDomain.CreateInstanceAndUnnrwap 有替代方案吗?
【发布时间】:2012-05-29 19:18:03
【问题描述】:

我正在尝试在特定的 AppDomain 中加载一个插件,一个加载程序集中的类,但希望避免我的插件来自 MarshalByRefObject。

Activator.CreateInstance(t) 崩溃了。

【问题讨论】:

  • Activator.CreateInstance(t) 崩溃。它是如何崩溃的?有任何堆栈跟踪吗?你在做什么的代码sn-p?为什么是替代品?为什么不修复崩溃?
  • @Snixtor 我不想跨应用程序域边界访问对象。创建此应用程序域的目的是将插件与主应用程序域隔离。
  • 如果您不尝试跨应用程序域边界访问,那么我不会将其加载到“特定的应用程序域”中,否则您有点需要“跨应用程序访问对象”域边界”。 正确的(MS 强制)方法是使用 MEF。 msdn.microsoft.com/en-us/library/dd460648.aspx

标签: c# assemblies appdomain


【解决方案1】:

根据 MSDN,MarshalByRefObject“允许跨应用程序域边界访问对象”。 “不从 MarshalByRefObject 继承的对象是按值隐式编组的”。并且“当跨应用程序域边界使用类型时,类型必须从 MarshalByRefObject 继承”。在我看来你被 MarshalByRefObject 困住了 - http://msdn.microsoft.com/en-us/library/system.marshalbyrefobject.aspx

【讨论】:

    【解决方案2】:

    放弃自制插件系统,改用Managed Extensibility Framework

    【讨论】:

      猜你喜欢
      • 2021-12-03
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 2018-02-26
      相关资源
      最近更新 更多