当对象派生自 MarshalByRefObject 并且也被标记为 [可序列化] 时会发生什么情况
本文关键字:序列化 什么情况 记为 派生 对象 MarshalByRefObject | 更新日期: 2023-09-27 18:19:56
我正在处理我的第一个使用 AppDomain 的项目,我想知道当一个对象派生自 MarshalByRefObject 并且也被标记为 [可序列化]时会发生什么?
例如:
[Serializable]
public class DummyClass: MarshalByRefObject
{
}
它通过引用进行编组,但仍然可以针对其他序列化用例进行序列化。有一个非常有趣的实现细节值得注意:为远程处理序列化的格式化程序使用一个SurrogateSelector
,该将为其序列化的任何MarshalByRefObject
生成代理,因此序列化仍会导致通过引用封送。其他序列化用途不会有这种SurrogateSelector
,因此不会有这种效果。