Установить значение по умолчанию в DataContract? - PullRequest
17 голосов
/ 01 июля 2010

Как мне установить значение по умолчанию для DataMember, например, для показанного ниже:

Я хочу установить ScanDevice = "XeroxScan" по умолчанию

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

Ответы [ 2 ]

31 голосов
/ 01 июля 2010

Я обычно делал это с помощью шаблона:

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

Не забудьте OnDeserializing, так как ваш конструктор не будет вызываться во время десериализации.

5 голосов
/ 01 июля 2010

Если вы всегда хотите использовать XeroxScan по умолчанию, почему бы не сделать что-то простое, например:

[DataMember(EmitDefaultValue = false)]
public string ScanDevice= "XeroxScan";
...