在DataContract中设置默认值?

aca*_*dia 19 c# wcf datacontractserializer

如何为DataMember设置默认值,例如下面显示的值:

我想默认设置ScanDevice ="XeroxScan"

    [DataMember]
    public string ScanDevice { get; set; }
Run Code Online (Sandbox Code Playgroud)

Dan*_*ant 33

我通常用这样的模式做到这一点:

[DataContract]
public class MyClass
{
    [DataMember]
    public string ScanDevice { get; set; }

    public MyClass()
    {
        SetDefaults();
    }

    [OnDeserializing]
    private void OnDeserializing(StreamingContext context)
    {
        SetDefaults();
    }

    private void SetDefaults()
    {
        ScanDevice = "XeroxScan";
    }
}
Run Code Online (Sandbox Code Playgroud)

不要忘记OnDeserializing,因为在反序列化期间不会调用构造函数.


kd7*_*kd7 5

如果您希望它始终默认为XeroxScan,为什么不做一些简单的事情:

[DataMember(EmitDefaultValue = false)]
public string ScanDevice= "XeroxScan";
Run Code Online (Sandbox Code Playgroud)