我应该添加DataMember属性来重写派生类中的属性吗?
问题描述:
我有几个看起来像这样的类:我应该添加DataMember属性来重写派生类中的属性吗?
[DataContract]
public class A {
[DataMember(Order = 1)]
public virtual string SomeString{
get;
set;
}
}
[DataContract]
public class B : A {
[DataMember(Order = 1)]
public override string SomeString{
get{ // Do something }
set{ // Do something}
}
}
我需要包括SomeString将DataMember属性在派生类中?是否将派生类的数据合约与基类隔离处理?
答
我遵循jdweng的建议,即实际检查派生类中带有和不带有DataMember属性的序列化数据。 SomeString属性在SomeString属性上没有DataMember属性的派生类中被序列化。
我会建议编写测试代码来创建数据,然后序列化结果。您会看到添加到派生类的'type'属性。 – jdweng
这是一个很好的建议。谢谢。它看起来像我不需要派生类上的DataMember属性来确保该属性是序列化的。 – luxun