假设我的网络API中有我的car对象,如下所示:
[DataContract(Name = "Car")]
public class Car
{
[DataMember]
private string Model;
}
然后在网络API运行一段时间之后,我想在汽车对象中再添加一个字段,如:
[DataContract(Name = "Car")]
public class Car
{
[DataMember]
private string Model;
[DataMember]
private int HorsePower;
}
但它有时会导致原始客户端中断。我在互联网上搜索过,发现使用API版本和数据合约版本可以解决这个问题,通过以下类定义,我可以让我的新版本API在新版本数据合同上运行。
[DataContract(Name = "Car")]
public class CarV1
{
[DataMember]
private string Model;
}
[DataContract(Name = "Car")]
public class CarV2
{
[DataMember]
private string Model;
[DataMember]
private int HorsePower;
}
但这似乎不是一种非常灵活的方法,如果数据合同发展很多,我的代码中会有很多冗余,很难跟踪这么多版本。
有没有更好的方法来解决这个问题?