У меня есть базовый класс, подобный следующему:
[Serializable]
public class SerializableDomainObject<T>
{
public SerializableDomainObject()
{
ID = Guid.NewGuid();
}
[DataMember(Name="ID", Order = 0)]
public Guid ID { get; private set; }
public void Save()
{
// serialize
}
public void Load()
{
// deserialize
}
}
У меня есть множество производных классов, вот пример одного из них:
[DataContract(Name="MyDomainObject")]
public class MyDomainObject : SerializableDomainObject<MyDomainObject>
{
public MyDomainObject()
{
}
public MyDomainObject(string name)
{
Name = name;
}
[DataMember(Order = 1)]
public string Name { get; private set; }
}
После сериализации здесь вывод:
<MyDomainObject xmlns="http://schemas.datacontract.org/2004/07/DomainObjects" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<_x003C_ID_x003E_k__BackingField>2b3c00f6-1b15-4a6b-bd6c-a1f447ea5a34</_x003C_ID_x003E_k__BackingField>
<Name>AName</Name>
</MyDomainObject>
Почему свойство ID не сериализуется с именем, которое я указал в атрибуте DataMember в базовом классе?