I am using a DataContractJsonSerializer and have an issue with the DataMember Name.
I made a base class and several derived classes. I need the derived classes becau
The trick is to specify EmitDefaultValue = false
for the base class's virtual data member, and in its implementation in the derived class return default value so the data member is not serialized. In the derived class define another data member with the required name.
[DataContract(Name = "baseclass", Namespace = "")]
[KnownType(typeof(DerivedClass))]
public class BaseClass
{
[DataMember(Name = "attributes", EmitDefaultValue = false)]
public virtual SomeType Fields { get; set; }
}
[DataContract(Name = "derivedclass", Namespace = "")]
public class DerivedClass : BaseClass
{
public override SomeType Fields
{
get { return null; }
}
[DataMember(Name = "fields")]
public SomeType DerivedFields
{
get { return base.Fields; }
}
}