2013-08-15 2 views
1

라우팅 테이블에 WCF Restful 서비스를 사용하고 있습니다.URI 템플릿의 열거 형?

출력을 serialize하는 방법을 제어하기 위해 열거 형을 사용하려고하는데 문제가 있습니다. 예를 들어 다음 열거 형을 사용합니다.

public enum outputType 
{ 
    JSON, XML, XML_XSD, CSV, TXT 
} 

그런 다음 간단한 테스트 호출을 사용하려고합니다. 잘 컴파일하지만 나에게 오류 제공

[WebGet(UriTemplate = "{ot}/test")] 
public Stream test(outputType ot) 
{ 
    using (DataTable dt = new DataTable("test")) 
    { 
     //build dummy datatable 
     dt.Columns.Add("col1"); 
     dt.Rows.Add(dt.NewRow()); 
     dt.Rows[0]["col1"] = "asdf"; 

     //serialize results 
     //takes a datatable and serializes it into the outputType's file format 
     return _m.serialize(ot, dt); 
    } 
} 

"유형 '문자열을'이 있어야합니다 UriTemplate 경로 세그먼트에 대한 변수를.".

문자열을 입력하고 일부 유효성 검사를 함께 해킹 할 수 있음을 알고 있지만 프레임 워크를 올바르게 사용하고 싶습니다. 어떻게해야합니까?

내 솔루션을 해킹해야한다면 웹 서비스 엔트리 포인트 중 하나 하나에 유효성 검사 기능을 추가해야한다.

+0

로 변환? – ataravati

+0

의견에 대한 응답을 반영하도록 초기 질문을 변경했습니다. 이 예제에서 serialize는 단지 데이터 테이블을 취하여 outputType enum에 지정된 형식으로 출력합니다. – user1886415

답변

1

변경 매개 변수 유형 및 Enum

public Stream test(string ot) { 
    ot = ot ?? "XML"; 

    try { 
     OutputType kind = Enum.Parse(typeof(OutputType), ot); 
     . . . 
    }catch(ArgumentException e) } 
     . . . 
    } 
} 
0

이 좋은 해결책이 아니다, 그러나 당신이 할 수있는 다음 직렬화 방법은 인수의 유형을 않습니다 string

[WebGet(UriTemplate = "json/test")] 
public Stream testJSON() 
{ 
    return test(outputType.JSON); 
} 

[WebGet(UriTemplate = "xml/test")] 
public Stream testXML() 
{ 
    return test(outputType.XML); 
} 

... 

private Stream test(outputType ot) 
{ 
    using (DataTable dt = new DataTable("test")) 
    { 
     //build dummy datatable 
     dt.Columns.Add("col1"); 
     dt.Rows.Add(dt.NewRow()); 
     dt.Rows[0]["col1"] = "asdf"; 

     //serialize results 
     return _m.serialize(outputType, dt); 
    } 
} 
관련 문제