C#OptionalField默认值

时间:2017-08-02 19:14:14

标签: c#

请记住,这是.net 2.0 - 2.5的旧版本,因为我使用的是Unity 5.6.2f1

[System.Serializable]
public class SaveManager {

    [OptionalField]
    public float version = 1.5f;
    [OptionalField]
    public string versionString = "1.5";
}

使用上述类通过BinaryFormatter将数据保存到文本文件时,这些值将设置为默认值。 版本将为0 versionString将是“”

有没有办法让不存在的可选字段具有默认值?我一直在谷歌搜索这个问题,但我没有找到任何有用的信息。

为了澄清,此问题通过Serializing SaveManager类重现,其中没有字段,将数据保存到txt文件。然后更新SaveManager类以包含OptionalField float版本,然后尝试读取保存的数据,然后将其反序列化为SaveManager。

2 个答案:

答案 0 :(得分:0)

更新:我在gist之后发了article,但是使用了你的班级。我序列化和反序列化文件,1.5的初始值仍然是

答案 1 :(得分:0)

.*\((.*)\)\)

使用OnDeserializing()修复感谢所有试图帮助我的人!