序列化没有空值

syn*_*cis 5 c# null serialization

让我们说我有一堂课

    [Serializable()]
public class Car
{
    public string model;
    public int year;
}
Run Code Online (Sandbox Code Playgroud)

我将其序列化为名为"car.xx"的磁盘.然后我添加一个属性到我的Car类,所以它将是这样的:

    [Serializable()]
public class Car
{
    public string model;
    public int year;
    public string colour;
}
Run Code Online (Sandbox Code Playgroud)

然后我将"car.xx"(包含2个字段)反序列化为包含3个字段的当前汽车类,这将使我们的Car类的"color"属性为null.

我如何设置" 新属性 "不获取空值?在构造函数中设置它们不会有帮助.

我正在使用BinaryFormatter序列化程序

我想要将null替换为""的字符串值

Jal*_*aid 4

如果您不使用 XmlSerializer,请考虑使用 OnDeserializedAttribute、OnSerializingAttribute、OnSerializedAttribute 和 OnDeserializingAttribute 属性

看到这个

喜欢:

[Serializable()]
public class Car
{
    public string colour;
    public string model;
    public int year;

    [OnDeserialized()]
    internal void OnDeserializedMethod(StreamingContext context)
    {
       if (colour == null)
       {
           colour = string.Empty;
       }
    }
}
Run Code Online (Sandbox Code Playgroud)