C#-在BinaryFormatter反序列化中设置默认int值
我上过以下课程:C#-在BinaryFormatter反序列化中设置默认int值,c#,.net,serialization,deserialization,binaryformatter,C#,.net,Serialization,Deserialization,Binaryformatter,我上过以下课程: [Serializable] public class Message { public string messageSummary; public DateTime messageDate; } 后来,我决定向类中添加另一个int字段-messageNumber [Serializable] public class Message { public string messageSummary; public DateTime messageDa
[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;
}
在反序列化中,当反序列化旧的序列化的消息
类(没有messageNumber
字段)时,如何将messageNumber的默认值设置为-1而不是0
我试图用[OnDeserialized()]
属性定义一个方法,但是messageNumber
已经在那里设置为0。0还可以指定messageNumber
的值,因此我无法在该方法中重写它。
是否可以将默认值设置为-1?
谢谢
[OnDeserialized]
在反序列化之后发生。如果要设置默认值,可以定义[OnDeserialization]
[OnDeserialized]
在反序列化之后发生。如果要设置默认值,可以定义[OnDeserialization]
您可以尝试使用中描述的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;
}
您可以尝试使用中描述的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;
}
为什么不使用DefaultValueAttribute?在您的情况下,是否可以使用属性而不是字段?为什么不使用DefaultValueAttribute?在您的情况下,是否可以使用属性而不是字段?