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

时间:2012-04-04 08:55:28

标签: c# .net

我写了一个应用程序(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);
 }
}

新的类版本看起来像(+ new funcionality):

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);
 }
}

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

1 个答案:

答案 0 :(得分:0)

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