MarshalByRefObject的作用是用来Remoting的,不是用来做Serialization的。两种对象可以用来Remoting,一个是继承于MarshalByRefObject的对象,一个是Serializable的对象。
当一个Serializable的对象传到另一个AppDomain时,实际上利用系列化在另一个AppDomain创建一个新的副本。
而当MarshalByRefObject对象传到另一个AppDomain时,实际上在另一个AppDomain创建了一个代理,任何对该代理的操作将作用到原来的对象上。MarshalByRefObject的作用就是用来保证代理不会把原对象泄露出去。