Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-在BinaryFormatter反序列化中设置默认int值_C#_.net_Serialization_Deserialization_Binaryformatter - Fatal编程技术网

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?在您的情况下,是否可以使用属性而不是字段?