2012-04-04 6 views
0

serialport를 통해 연결된 전자 장치를 제어하는 ​​데 사용되는 응용 프로그램 (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); 
} 
} 

:

class Conversions 
{ 
public static float IntToPressure(int parameter) 
{ 
    //changed 
    return NewAlgorithm(parameter); 
} 
//new 
public static float IntToTemperature(int parameter) 
{ 
    return TempAlgorithm(parameter); 
} 
} 
: 온도 IntToPressure 모든 압력 매개 변수를 변환합니다, + 새로운 방법을

같은 전환 (이전 버전)를 사용하는 클래스 함께 :

:

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

새로운 클래스의 버젼 (+ 새 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); 
} 
} 

또 다른 문제는 새로운 앱 버전에 기기 구성 및 새로운 기기 기능 사용에 대한 새로운 클래스 정의가 포함되어 있다는 것입니다.

답변

0

두 개의 하위 클래스에있는 장치 간의 차이를 제외하고 어떤 장치가 연결되어 있는지 확인하여 올바른 인스턴스를 인스턴스화 할 수 있습니다. 변경 사항을 외부 세계로 내보내려면이 기능이 작동하지 않습니다.

+0

내 질문을 편집했습니다. 그것을 확인하시기 바랍니다. – adams