Set default value in a DataContract?

acadia picture acadia · Jul 1, 2010 · Viewed 16.1k times · Source

How can I set a default value to a DataMember for example for the one shown below:

I want to set ScanDevice="XeroxScan" by default

    [DataMember]
    public string ScanDevice { get; set; }

Answer

Dan Bryant picture Dan Bryant · Jul 1, 2010

I've usually done this with a pattern like this:

[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";
    }
}

Don't forget the OnDeserializing, as your constructor will not be called during deserialization.