c# - C# - 在 BinaryFormatter 反序列化中设置默认 int 值
问题描述
我有以下课程:
[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?谢谢
解决方案
您可以按照本文档中的说明尝试 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;
}
推荐阅读
- r - 如何使用 purrr::map 将函数应用于嵌套列,并输出到新列?
- node.js - 如何在 NodeJS 中解码 X.509 主题(来自客户端证书)
- html - 图片不显示在html中,但显示在浏览器中
- javascript - autonumeric.js 中的正最小值
- python - 如何“对数化”我的频谱图输出?
- java - 监听另一个组件中的事件并等待回复
- linkedin - share-offsite url 如何决定使用什么尺寸的图片?
- javascript - jQuery 切换按钮切换所有 div 而不是单个所需的
- c# - C# uniquUE 中的 AES 解密
- python - 用字典在熊猫中的列到行?