2009-08-19 4 views
0

webservice를 통해 enum에 액세스해야합니다.enum-like 클래스의 연속성

public class StatusType 
{ 
    public StatusVal Pending { get { return new StatusVal(1, "Pending"); } } 
    public StatusVal Authorised { get { return new StatusVal(2, "Authorised"); } } 
    public StatusVal Rejected { get { return new StatusVal(3, "Rejected"); } } 
    public StatusVal Sent { get { return new StatusVal(4, "Sent"); } } 
    public StatusVal InActive { get { return new StatusVal(5, "InActive"); } } 

    public List<StatusVal> StatusList() 
    { 
     List<StatusVal> returnVal = new List<StatusVal>(); 
     StatusType sv = new StatusType(); 
     returnVal.Add(sv.Pending); 
     returnVal.Add(sv.Authorised); 
     returnVal.Add(sv.Rejected); 
     returnVal.Add(sv.Sent); 
     returnVal.Add(sv.InActive); 

     return returnVal; 
    } 
} 

public class StatusVal 
{ 
    public StatusVal(int a, string b) 
    {   
     this.ID = a; 
     this.Name = b; 
    } 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 

난 다음에 WebMethod으로 StatusVal의리스트를 얻을 :

Web 서비스가 열거 (ENUM 정의 프리셋 값 무시) 0 계 정수를 할당 같이

는, I는 다음 내장

[WebMethod] 
public List<ATBusiness.StatusVal> GetStatus() 
{ 
    ATBusiness.StatusType a = new ATBusiness.StatusType(); 
    return a.StatusList(); 
} 

이 웹 메서드를 사용하여 참조 할 수는 없지만 오류가 발생합니다. 매개 변수없는 생성자가 없기 때문에 StatusVal을 직렬화 할 수 없습니다.

WebMethod의 반환 유형으로 정의 된 StatusValue 유형에 params를 전달해야합니까?

StatusList() 메소드에 따라 StatusVals의 목록을 반환해야합니다.

+0

[Serializable] 속성으로 표시 할 수 있습니까? –

답변

1

오류가 표시되면 클래스에 매개 변수가없는 생성자가 필요합니다. unserializing 할 때, 런타임은 당신이 정의한 것 대신에 그 생성자를 사용할 것입니다.

같은 뭔가 : 당신은 매개 변수로 생성자를 생성 할 때

public StatusVal() 
{ 
} 

이 자동으로 제거되는 기본 노 매개 변수 생성자, 그 컴파일러에 대해 불평거야.

+0

그럼 StatusList() 메서드로 생성 된 채워진 목록을 여전히 반환하려면 무엇이 필요합니까? – callisto

+0

매개 변수없는 생성자를 추가하면 작동합니다. – pgb

관련 문제