我需要在另一个appdomain中调用对象的方法(传递param并获取结果)。想法?
UPD这两个AppDomain都不是由我的代码创建的(主机应用程序创建它,然后我的代码被调用)。我如何从另一个AppDomain访问?
答案 0 :(得分:14)
如果您在其他域中创建了一个对象,例如使用AppDomain.CreateInstanceAndUnwrap,在另一个域中调用对象所需的只是调用对象的方法。
进行跨应用程序域调用的最简单方法就是直接在该对象上进行调用,该对象实际上是通过其代理从另一个域公开的,存在于另一个域中。
<强> UPD 强>
不幸的是,获得主机域并不容易。您应该枚举this之类的域名,并在其中找到主机名称。我认为您的主机域是方法AppDomain.IsDefaultAppDomain
返回 true 的域。
答案 1 :(得分:3)
通常使用AppDomain.DoCallBack来实现。您需要确保如果要传递参数,则需要创建一个可序列化对象,其方法将传递给上述方法。 在回调方法中,您可以执行另一个AppDomain回调以将结果传递回原始AppDomain。