在代码中维护不同的设备版本

本文关键字:版本 代码 维护 | 更新日期: 2023-09-27 18:30:09

我写了一个应用程序(C#,.NET 2.0),用于控制通过串行端口连接的电子设备。

现在,设备软件已经更新了一些旧版本无法提供的新功能。

如何在代码中维护这些更改,以便新的应用程序版本同时支持两个设备版本?

我知道我可以使用一些if语句或预处理器命令来检查设备版本,但在C#中,正确的方法是什么?

编辑:

我想我应该写更多关于我的问题的文章。假设我有一个用于转换旧设备版本中的一些值的类:

class Conversions
{ 
 public static float IntToPressure(int parameter)
 {
  return AlgorithmA(parameter);
 }
 public static float IntToUnderpressure(int parameter);
 {
  return AlgorithmB(parameter);
 }
}

在新版本中,我只需要一种方法:IntToPressure,它将转换所有压力参数,+温度的新方法:

class Conversions
{ 
 public static float IntToPressure(int parameter)
 {
  //changed
  return NewAlgorithm(parameter);
 }
 //new
 public static float IntToTemperature(int parameter)
 {
  return TempAlgorithm(parameter);
 }
}

使用Conversions(旧版本)的类也是如此:

class UsingConversions
{ 
 public float GetPressure()
 {
  return Conversions.IntToPressure(this.somePressureParameter);
 }
 public float GetUnderpressure()
 {
  return Conversions.IntToUnderpressure(this.someUnderpressureParameter);
 }
}

新的类版本看起来像(+新的功能性):

class UsingConversions
{ 
 public float GetPressure()
 {
  return Conversions.IntToPressure(this.somePressureParameter);
 }
 public float GetUnderpressure()
 {
  //changed
  return Conversions.IntToPressure(this.someUnderpressureParameter);
 }
 //new
 public float GetTemperature()
 {
  return Conversions.IntToTemperature(this.someTemperatureParameter);
 }
}

另一个问题是,新的应用程序版本包含用于配置设备和使用新设备功能的新类的定义。

在代码中维护不同的设备版本

您可以计算出两个子类中设备之间的差异,并通过检查插入的设备来实例化正确的设备。如果您需要将这些更改导出到外部世界,这将不起作用。