【发布时间】:2013-09-12 18:42:45
【问题描述】:
我正在寻找一种将组件(基于第 3 方 dll)隔离在可卸载的单独 AppDomain 中的方法。我的计划是使用基于CreateInstanceAndUnwrap 和MarshalByRefObject 的对象与组件进行通信。
问题是,为了在主程序集中使用从MarshalByRefObject 派生的对象,它必须引用组件 dll,我试图避免这种情况。我想我可以通过接口解耦它
class MyObject: MarshalByRefObject, IMyObject
{
}
但我无法将从CreateInstanceAndUnwrap 返回的对象转换为IMyObject(因为它实际上是一个代理,而不是我猜的真实对象?)。
我是否遗漏了什么,或者这无法完成,唯一的答案是 WCF?
更新: 我遇到的实际问题是 IMyObject 被定义了两次:我将文件包含在主程序集中和组件程序集中。这样我得到一个异常“无法将透明代理转换为类型”。当我只使用从两个程序集中引用的一个接口/类定义时,它可以正常工作(正如 Will 建议的和我上面描述的)。
【问题讨论】:
标签: c# interface marshalling appdomain