C# 反序列化缺少元素的数据集-需要指定DefaultValue

C# 反序列化缺少元素的数据集-需要指定DefaultValue,c#,dataset,deserialization,default,C#,Dataset,Deserialization,Default,我想了解处理以下情况的最佳方法是: 我已将数据集的旧序列化实例持久化到磁盘。 我正在数据集上引入一个新字段 当读入数据集的旧xml版本时,它们将作为DBNulls读入。 它尝试将DBNull强制转换为int,并在尝试访问字段中的值时发出barfs 我希望的行为是,如果在序列化数据集中找不到与新字段对应的元素,它将默认为0 我已确定的选择是: (1) 无论我在哪里尝试访问该字段,我都可以设置一个catch块(InvalidCastException)并将该字段的值设置为0。 (2) 更改Data

我想了解处理以下情况的最佳方法是:

我已将数据集的旧序列化实例持久化到磁盘。 我正在数据集上引入一个新字段

当读入数据集的旧xml版本时,它们将作为DBNulls读入。 它尝试将DBNull强制转换为int,并在尝试访问字段中的值时发出barfs

我希望的行为是,如果在序列化数据集中找不到与新字段对应的元素,它将默认为0

我已确定的选择是:

(1) 无论我在哪里尝试访问该字段,我都可以设置一个catch块(InvalidCastException)并将该字段的值设置为0。 (2) 更改DataSet.Designer.cs以更改看到DBNulls时的行为。虽然文件是自动生成的,但我认为这不是一个进行更改的好地方

我不喜欢(1)或(2),我想知道是否有更优雅的解决方案


如有任何建议/帮助,将不胜感激

发现有一个非常简单而优雅的解决方案

我所需要做的就是将AllowDBNull属性的值改为'False'而不是'True'

我希望在这里能更明确地记录这种行为: