有一种方法可以在成员类型发生变化时提供向后兼容性吗?例如,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; }
}
答案 0 :(得分: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; }
}