Joe*_* Gö 16 c# serialization exception
当实现ISerializable在C#中的接口,我们提供一个构造函数,需要一个SerializationInfo对象,然后用各种查询时GetInt32,GetObject为了填补对象的,我们正在尝试反序列化领域等方法.
实现此接口的一个主要原因,而不仅仅是使用[Serializable]属性,是为了向后兼容:如果我们在某个时刻向类中添加了新字段,我们可以捕获SerializationException序列化的旧版本的类,并处理他们以适当的方式.
我的问题如下:为什么我们必须将这些例外用于控制流程?如果我反序列化大量前一段时间保存的类,可能每个类中的每个缺失字段都会抛出异常,从而导致性能非常差.
为什么SerializationInfo类不提供TryGetValue只false在名称字符串不存在时才会返回的方法?
Mar*_*ell 26
您可以遍历可用字段并使用switch,但是......
foreach(SerializationEntry entry in info) {
switch(entry.Name) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
或者你可以使用protobuf-net ;-p
| 归档时间: |
|
| 查看次数: |
4770 次 |
| 最近记录: |