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

时间:2012-01-10 06:03:02

标签: c# .net appdomain .net-remoting

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

例如:

[Serializable]
public class DummyClass: MarshalByRefObject
{

}

1 个答案:

答案 0 :(得分:1)

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