シリアルポート経由で接続された電子機器を制御するためのアプリケーション(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);
}
}
新しいバージョンでは、必要なメソッドは1つだけです。すべての圧力パラメーターを変換する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);
}
}
もう1つの問題は、新しいアプリバージョンに、デバイスの構成と新しいデバイス機能の使用に使用される新しいクラスの定義が含まれていることです。