序列化:重写属性中的DataMember属性

时间:2013-04-17 20:29:49

标签: c# .net

给出以下代码片段......

public MyBaseClass
{
    ...
    [DataMember]
    public virtual Rectangle MyRectangle
    {
        get;
        set;
    }
    ....
}

public MyDerivedClass : MyBaseClass
{
    ...
    [DataMember] // Is that necessary?
    public override Rectangle MyRectangle
    {
        get { return base.MyRectangle; }
        set {
            ...
            base.MyRectangle = value;
        }
    }
    ....
}

......我想知道[DataMember]是否也应该宣布MyDerivedClass.MyRectangle?感谢。

1 个答案:

答案 0 :(得分:0)

实际上,这取决于你想要对这些属性做出的用法。我遇到了一个场景,我使用这些属性进行序列化 ProtoBuf 。在重写的属性上没有DataMember属性的情况下,一切正常。然后我们决定也支持使用 JSON 格式进行序列化。然后该属性是强制性的,并且如同所述的hawkee一样,它不会影响现有的行为。