2009-12-09 9 views
0

해당 클래스 중 하나에서 상태 속성을 노출하는 타사 웹 서비스와 함께 작업하지만이 속성은 실제로 다른 클래스 자체입니다.클래스가 열거 형 (또는 열거 형 일 필요)

웹 서비스가 추상화되어 있고 우리가 필요로하는 속성/메소드를 노출하는 자체 어댑터 클래스가 있기 때문에이 웹 서비스를 회사의 다른 개발자가 쉽게 사용할 수 있도록 노력하고 있습니다. 누군가가 말했다 전에 내가 나를 많이 열거 같은 상태 개체를 처리 할 수있는 방법을 마련하기 위해 노력 해왔다 것은

내가 끝낼하고 싶은 것은 'object.status = StatusAdapter.<value>

같은 입니다 단순히 열거 형을 사용하십시오. 단순히 열거 형을 사용하지 않는 이유는 웹 서비스 객체가 나타내는 상태 데이터가 언제든지 사용자가 클래스 라이브러리를 변경하고이를 사용하는 모든 응용 프로그램에 다시 배포해야한다는 것을 의미합니다.

아이디어가 있으십니까?

편집 내가 StatusAdapter이 열거 아니라 런타임에 동적으로 채워 때 최종 개발자가 열거의 라인을 따라, 다음을 수행 할 수 있도록하려면 명확합니다.

If(foo.Status == StatusAdapter.NotStarted){...} 

답변

5

인터페이스를 사용하십시오. 그 일을해야합니다. 예를 들어

테이크, 수업이

public interface IStatus 
{ 
} 

public class SuccessStatus: IStatus 
{ 
} 

public class FailStatus: IStatus 
{ 
} 

을, 당신은이 작업을 수행 할 수 있습니다

public class CheckWebService 
{ 
    public IStatus Status 
    {get;set;} 

} 

그래서 클래스를 사용하여 누구나 쉽게이 작업을 수행 할 수 있습니다

var checking = new CheckWebService(); 
    checking.Status=new SuccessStatus(); 

또는 IStatus에서 상속 된 자체 status을 정의하고 사용하십시오.

이렇게하면 코드를 재배포 할 필요없이 사용자가 자신의 상태를 정의 할 수 있습니다.

+0

사용자의 서로 다른 값을 반환하는 것입니다 이전에 알려지지 않은 상태를 반환하는 웹 서비스. 인터페이스를 사용한다면 클래스 라이브러리를 변경하고 다시 배포해야합니다. 이것을 반영하기 위해 원래의 질문을 편집했습니다. – Nathan

0

유일한 방법은 유형 StatusAdapter의이다 StatusAdapter에 등록 번호를 가지고 자신의 상태를 코드를 처리 할 수있다 정의되지 않습니다 StatusAdapter

+0

Tim이 방법에 대해 좀 더 자세히 설명해 주시겠습니까? – Nathan