2012-04-04 3 views
0

Ich schrieb eine Anwendung (C#,. NET 2.0), die verwendet wird, um elektronische Geräte über Serialport verbunden zu steuern.Pflegen Sie verschiedene Geräteversionen in Code

Jetzt wurde die Gerätesoftware um einige neue Funktionen erweitert, die in älteren Versionen nicht verfügbar sind.

Wie kann ich diese Änderungen im Code beibehalten, damit die neue App-Version beide Geräteversionen unterstützt?

Ich weiß, ich kann einige If-Anweisung oder Präprozessor-Befehle verwenden, um die Geräteversion zu überprüfen, aber was ist der richtige Weg, dies in C# zu tun?

EDIT:

Ich glaube, ich sollte mehr über mein Problem schreiben. Es sei angenommen, dass ich eine Klasse einige Werte von älteren Geräteversion zu konvertieren verwendet haben:

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

In neue Version, die ich nur eine Methode benötigen: IntToPressure, die alle Druckparameter konvertiert, + neue Methode zur Temperatur:

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

Das gleiche mit Klassen, die Conversions (alte Version) verwendet:

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

neue Klasse-Version sieht aus wie (+ neue funcionality):

Ein weiteres Problem ist, dass die neue App-Version Definitionen neuer Klassen enthält, die zum Konfigurieren von Geräten und zum Verwenden neuer Gerätefunktionen verwendet werden.

Antwort

0

Sie könnten den Unterschied zwischen den Geräten in zwei Unterklassen ausklammern und den richtigen instanziieren, indem Sie prüfen, welches Gerät eingesteckt ist. Dies funktioniert nicht, wenn Sie diese Änderungen an die Außenwelt exportieren müssen

+0

Ich habe meine Frage bearbeitet. Bitte schau es dir an. – adams

Verwandte Themen