在VB.NET 2010中反序列化时的默认值
我有一个(可序列化)类(Accounts),在这个类中有一些属性,包括另一个可序列化类(Symbols)的字典 我序列化类(帐户)并将它们保存到一个文件中,以便下次运行时使用 现在,我有了这个应用程序的新版本,它在(Symbols)类中包含了一个新属性。当我反序列化(帐户)时,它会正确加载字典,但会加载不需要的值(字符串为nothing,布尔值为false) 反序列化时,是否可以为Symbols类中的这些新属性设置默认值?请注意,我希望没有For循环,因为帐户和符号的字典很大,这意味着我需要一个巨大的double For循环来使用For循环解决这个问题 谢谢。在VB.NET 2010中反序列化时的默认值,vb.net,serialization,dictionary,deserialization,vb.net-2010,Vb.net,Serialization,Dictionary,Deserialization,Vb.net 2010,我有一个(可序列化)类(Accounts),在这个类中有一些属性,包括另一个可序列化类(Symbols)的字典 我序列化类(帐户)并将它们保存到一个文件中,以便下次运行时使用 现在,我有了这个应用程序的新版本,它在(Symbols)类中包含了一个新属性。当我反序列化(帐户)时,它会正确加载字典,但会加载不需要的值(字符串为nothing,布尔值为false) 反序列化时,是否可以为Symbols类中的这些新属性设置默认值?请注意,我希望没有For循环,因为帐户和符号的字典很大,这意味着我需要一个
Ahmad您只需为每个属性指定一个默认值: 对于支持字段:
Private _someProperty as Boolean = True
对于自动实现的属性:
Public Property SomeProperty As Boolean = True
我通过将所有变量作为字符串(作为对象处理)来解决这个问题,在我的代码中,我检查值是否为空,然后在需要时指定默认值。。。我知道这不是最好的解决方案,但至少它成功了 将默认值添加到私有变量将不起作用。似乎在从序列化中读取字典后,对于字符串和对象,它将通过(无)覆盖,对于数字和布尔变量,它将通过(0和False)覆盖……我设法解决了这个问题,将所有变量作为字符串(作为对象处理),并在代码中,我检查值是否为空,然后在需要时指定默认值。。。我知道这不是最好的解决方案,但至少它成功了!我通过将所有变量作为字符串(作为对象处理)来解决这个问题,在我的代码中,我检查值是否为空,然后在需要时指定默认值。。。我知道这不是最好的解决方案,但至少它成功了!