当一个对象派生自MarshalByRefObject并且还标记为时会发生什么?

我正在研究我的第一个使用AppDomains的项目,我想知道当一个对象派生自MarshalByRefObject并且还标记为[Serializable]时会发生什么?

例如:

[Serializable] public class DummyClass: MarshalByRefObject { } 

它通过引用进行编组,但仍然可以序列化以用于序列化的其他用例。 有一个实现细节很有意思值得注意:为远程处理序列化的格式化程序使用SurrogateSelector ,它将为它串行化的任何MarshalByRefObject生成代理,因此序列化仍将导致通过引用进行编组。 其他序列化用途将不具有SurrogateSelector ,因此不具有该效果。