Search code examples
c#wcfdatacontractserializer

Set default value in a DataContract?


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

Solution

  • 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.