![](/img/trans.png)
[英]How to change the order of Deserialization using BinaryFormatter in C#?
[英]C# - Setting default int value in BinaryFormatter deserialization
我有以下课程:
[Serializable]
public class Message
{ public string messageSummary;
public DateTime messageDate;
}
后来,我决定在类中添加另一个 int 字段 - messageNumber
[Serializable]
public class Message
{
public string messageSummary;
public DateTime messageDate;
public int messageNumber;
}
在反序列化中,当反序列化旧的序列化Message
类(没有messageNumber
字段)时 - 如何将 messageNumber 的默认值设置为 -1 而不是 0?
我试图用[OnDeserialized()]
属性定义一个方法,但messageNumber
已经设置为 0。0 也可以是messageNumber
的值,所以我不能在该方法中覆盖它。 是否可以将默认值设置为 -1? 谢谢
[OnDeserialized]
发生在反序列化之后。 如果要设置默认值,可以定义[OnDeserializing]
序列化回调
[OnDeserializing]
private void SetMessageNumberDefault(StreamingContext sc)
{
messageNumber = -1; // add default value
}
您可以按照本文档中的描述尝试使用 DefaultValueAttribute。 您可以尝试以下解决方案:
[Serializable]
public class Message
{
public const int Int_Default = -1;
public string messageSummary;
public DateTime messageDate;
[System.ComponentModel.DefaultValue(Int_Default)]
public int messageNumber { get; set; } = Int_Default;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.