gpt4 book ai didi

c# - 为什么 SerializationInfo 没有 TryGetValue 方法?

转载 作者:可可西里 更新时间:2023-11-01 03:07:11 40 4
gpt4 key购买 nike

在 C# 中实现 ISerializable 接口(interface)时,我们提供了一个构造函数,它接受一个 SerializationInfo 对象,然后用各种 GetInt32 查询它, GetObject 等方法来填充我们试图反序列化的对象的字段。

实现此接口(interface)而不是仅仅使用[Serializable] 属性的一个主要原因是为了向后兼容:如果我们在某个时候向类添加了新字段,我们可以捕获SerializationException 由类的序列化旧版本抛出,并以适当的方式处理它们。

我的问题如下:为什么我们必须将这些异常用于本质上控制流?如果我正在反序列化大量之前保存的类,则每个类中的每个缺失字段都可能会引发异常,从而导致性能非常差。

为什么 SerializationInfo 类不提供 TryGetValue 方法,如果名称字符串不存在,这些方法只会返回 false

最佳答案

您可以遍历可用字段并使用 switch,但是...

foreach(SerializationEntry entry in info) {
switch(entry.Name) {
...
}
}

或者你可以使用 protobuf-net ;-p

关于c# - 为什么 SerializationInfo 没有 TryGetValue 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1673208/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com