1

当成员类型发生变化时,有没有办法提供向后兼容性?例如,Person 类包含一个整数的版本 1,但包含字符串的版本 2。我知道这违反了合同,但这个例子在现实生活中的软件开发中并不罕见。

提前致谢。

// Version 1
[ProtoContract]
class Person 
{
    [ProtoMember(1)]
    public int ID { get; set; }
}

// Version 2
[ProtoContract]
class Person 
{
    [ProtoMember(1)]
    public string ID { get; set; }
}
4

1 回答 1

2

垫片属性可能是您最好的选择:

// Version 2
[ProtoContract]
class Person 
{
    [ProtoMember(1)]
    private int? ID_v1 {
        get { return null; } // means it won't be serialized
        set { if(value != null) ID = value.ToString(); }
    }

    [ProtoMember(2)]
    public string ID { get; set; }
}
于 2013-08-07T12:02:38.187 回答