有没有办法在AppDomain边界共享一个界面?也就是说,我可以使用共享接口在我的进程中的另一个AppDomain中引用实例吗?我知道可以使用带有命名管道的WCF,但我想知道是否有更直接(和更简单)的方式以面向对象的方式进行通信。
答案 0 :(得分:2)
您可以创建第二个AppDomain并在AppDomain边界传递MarshalByRef对象(可能是继承您的接口)。这里有一个简单的例子:
http://msdn.microsoft.com/en-us/library/3c4f1xde.aspx
所以在示例中:
AppDomain ad = AppDomain.CreateDomain("New domain");
Worker remoteWorker = (Worker) ad.CreateInstanceAndUnwrap(
Assembly.GetExecutingAssembly().FullName,
"Worker");
remoteWorker实际上是“新域”。调用域中的变量remoteWorker实际上是一个TransparentProxy,它将调用封送到另一个应用程序域中的实例。