.NET 中的模型/API 版本控制并将更改传播到依赖方法

问题描述 投票:0回答:1

根据我对 API 版本控制或模型版本控制的理解,我发现如果出现重大更改,模型应该以这种方式更新

public class ProductV2 : Product
{
        //New attributes
}

参考:API 版本控制 - 如果模型发生变化我该怎么办

如果我有使用此模型的服务怎么办?

public ProcessedProduct ProductProcessService(Product product);

如何处理使用这些模型的服务中模型的更改?

我看到的可能选项是

  1. 界面的使用
public ProcessedProduct ProductProcessService(IProduct product);
  1. 新方法
public ProcessedProduct ProductProcessService(Product product);
public ProcessedProduct ProductProcessServiceV2(ProductV2 product);

或者有没有更好的方法来处理这种情况?

c# asp.net .net .net-8.0
1个回答
0
投票

使用接口只会将您遇到的问题转移到另一个接口的代码上。

我会选择第二个选项,单独的类来处理版本 2 中的新

Product
。这样,正在运行的产品的“旧”处理将保持不变,并且可以防止软件中出现任何回归。

此外,新产品的实现现在可以有所不同,并且可以在不触及旧产品原始代码的情况下进行调整。

但是,如果对于新旧产品来说,大多数实现是共同的,我会尝试将产品放在接口后面(因此选项号1)并仅处理接口后面的差异(在实现中)。

© www.soinside.com 2019 - 2024. All rights reserved.