如果我有网络服务方法,例如
[WebMethod]
[XmlInclude(typeof(SportsCar)), XmlInclude(typeof(FamilyCar))]
public Car[] GetCars()
{
Car[] cars = new Car[2];
cars[0] = new FamilyCar();
cars[1] = new SportsCar();
return cars;
}
如果我想在我的服务中添加新的汽车类型,我必须在Web方法中添加新的XmlInclude属性。不幸的是,客户端(AFAIK)现在需要更新其Web服务引用,重建和重新部署。否则他们会收到XML文档生成错误。
有什么策略可以解决这个问题?
感谢。
答案 0 :(得分:2)
如果您的客户无法理解不同的汽车,也许最可靠的选择是将其视为已关闭,并添加一个单独的方法:
[...attributes...]
public Car[] GetCars2()
即。只有新GetCars2
方法的来电者才能看到SportsCar
个结果。将此情况发挥到极致,您可以拥有v2端点,并保持原始v1不变。然后,您可以将客户端迁移到新的API。