我正试图绕过这个来做出正确的设计决定。
假设我创建了一个新的appdomain B,在其中创建一个对象O的实例,然后将对该对象的引用传递回appdomain A,这样A就可以进行如下调用:
O.SomeMethod(parameter)
SomeMethod中的代码将在appdomain B中运行,这正是我所期望的。 我想知道参数和返回值会发生什么。 是使用binaryformatter序列化并按值传递,还是仅在appdomains之间传递的数据的引用?
我希望它是后者,这意味着你可以让O.SomeMethod()返回大量数据而没有序列化惩罚。
谢谢!
答案 0 :(得分:0)
传递给函数的参数需要在调用方法之前传递appdomain边界。返回的值也需要通过边界(在另一个方向)。
任何时候对象都需要通过边界:
MarshalByRefObject
;或MBRO
继承,则会发生这种情况。要回答你的问题,是的,参数被序列化然后反序列化,除非它们继承自MBRO
。