Rob*_*vey 6 c# serialization runtime
我最近在看运行时序列化并遇到了ISerializationSurrogate界面.SetObject然而,我对它的方法感到困惑.
签名是:
object SetObjectData(object obj, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context, System.Runtime.Serialization.ISurrogateSelector selector)
和帮助信息是:
摘要:
使用System.Runtime.Serialization.SerializationInfo中的信息填充对象.
参数:
obj:要填充的对象.
info:填充对象的信息.
context:反序列化对象的源.
selector:代理选择器,其中搜索兼容的代理开始.
返回:
填充的反序列化对象.
如果obj是要填充的对象,为什么会返回The populated deserialized object?在MSDN的一个例子中,他们填充obj和return null.
查看此.NET专栏文章:http://msdn.microsoft.com/en-us/magazine/cc188950.aspx
它说:
请注意,SetObjectData方法的返回类型为Object.这会让您认为SetObjectData实际上可以返回对完全不同类型的对象的引用.但是,Microsoft SoapFormatter和BinaryFormatter类型完全忽略此返回值,这就是我在前一个示例中返回null的原因.显然,这里有一个错误; 返回值应允许SetObjectData返回不同的对象.
Microsoft已安排此错误进行修复.如果返回值为null,则格式化程序将使用它传递给SetObjectData的对象.如果SetObjectData返回对象引用,则格式化程序将使用返回的对象.不幸的是,在修复此错误之前,您无法反序列化值类型.
| 归档时间: |
|
| 查看次数: |
1434 次 |
| 最近记录: |