2017-02-09 1 views
0

요청 본문에 RestCharp를 사용하여 XML로 직렬화하는 클래스에 List<AnimalsEnum> Foo 속성이 있습니다. 나는로 출력을하고 싶습니다 :Restsharp - 열거 형 목록을 문자열로 serialize하는 방법

<rootNode> 
    ... existing content... 
    <Foo>Elephant</Foo> 
    <Foo>Tiger</Foo> 
    .... more content 

대신, 관련 직렬화의 경우, 내가

<Foo> 
    <AnimalsEnum /> 
    <AnimalsEnum /> 
</Foo> 

내가 문자열로 열거 값을 변환하고 컨테이너 요소를 제거하고 싶습니다 가질 수 자동으로 추가됩니다. RestSharp에서 가능합니까? 나는 그것이 속성들로 가능할 수도 있다고 생각했지만 분명히 그렇지 않았다. 커스텀 시리얼 라이저로이 결과물을 직접 다루어야합니까?

코드 게시 할 어렵지만, 예제를 유지 :

class Bar 
{ 
    public string Name{get;set;} 
    public List<AnimalsEnum> Foo{get;set;} 
    public enum AnimalsEnum {Tiger,Elephant,Monkey} 
} 

및 당신은 마이크로 소프트의 XmlSerializer를 만들기 위해 RestSharp의 DotNetXmlSerializer 내장에서 사용할 수있는

var req = new RestSharp.RestRequest(RestSharp.Method.POST); 
req.RequestFormat = RestSharp.DataFormat.Xml; 
req.AddQueryParameter("REST-PAYLOAD", ""); 
req.AddXmlBody(myBar); 
+0

관련 코드를 게시 할 수 있습니까? – Dennis

+0

@Dennis updated questions – user3791372

+0

왜 출력이 ' 코끼리'이 되길 원합니까? 나는 BCL의 XmlSerializer를 살펴 봤고 목록에서 열거 형을 ' Tiger'으로 serialize하고 'Foo' 태그를 반복하는 대신 훨씬 정확 해 보입니다. – Dennis

답변

0

요청에 직렬화 실제 직렬화를 수행하십시오. 그런 다음 [XmlElement]을 적용하여 BarList<AnimalsEnum>가 외부 컨테이너 요소없이 직렬화되도록 지정하는 XML serialization attributes를 사용할 수 있습니다

public class Bar 
{ 
    public string Name { get; set; } 
    [System.Xml.Serialization.XmlElement] 
    public List<AnimalsEnum> Foo { get; set; } 
    public enum AnimalsEnum { Tiger, Elephant, Monkey } 
} 

을 그런 요청을 할 때, 수행

var req = new RestSharp.RestRequest(RestSharp.Method.POST); 

// Use XmlSerializer to serialize Bar 
req.XmlSerializer = new RestSharp.Serializers.DotNetXmlSerializer(); 

req.RequestFormat = RestSharp.DataFormat.Xml; 
req.AddQueryParameter("REST-PAYLOAD", ""); 
req.AddXmlBody(myBar); 

Bar을 그 XmlSerializer은 공용 형식 만 serialize 할 수 있기 때문에 public이어야합니다.