<T>

2017-02-08 8 views
0

リストにXMLの要素のコレクションをUnserialising私はRestSharpを使用して、クラス内のプロパティにノードのコレクションをdeserialiseしようとしている:<T>

client.Execute<Foo>(req); 

どこ

public class Foo 
{ 
    public List<Bar> Bar{get;set;} 
    ... 
} 
public class Bar 
{ 
    public int Id{get;set;} 
    public string Name{get;set;} 
} 

とxmlレスポンスは次のとおりです。

<Foo> 
    <Bar><Id>4</Id><Name>asdf4</Name></Bar> 
    <Bar><Id>5</Id><Name>asdf5</Name></Bar> 
    <Bar><Id>6</Id><Name>asdf6</Name></Bar> 
</Foo> 

ただし、常にプロパティにはすべてのフィールドはnullに設定されます。私は研究し、すべての答えは必要な数のクラスを使用して示唆しています。ここでそれは不可能です。このレスポンスをリスト形式にするには、どうすればよいですか?私はまた、数年前の質問によると、xmlデシリアライザを明示的にDotNetデシリアライザに指定しようとしましたが、喜んでいませんでした。

答えて

0

したいList<Bar>を取得するには、あなたは自分のExecute<T>に変更する必要があります。Fooは、他の性質を持っている、あなたのコメントに基づいて

client.Execute<List<Bar>>(req); 

編集

を。

<Foo> 
    <Bars> 
     <Bar><Id>4</Id><Name>asdf4</Name></Bar> 
     <Bar><Id>5</Id><Name>asdf5</Name></Bar> 
     <Bar><Id>6</Id><Name>asdf6</Name></Bar> 
    </Bars> 
    <OtherProp>this</OtherProp> 
</Foo> 

そしてあなたFooに変更します。私はあなたがより多く、このようになり、すべての可能性であれば、あなたのXMLを変更する必要があるかもしれないと思う

public class Foo 
{ 
    public List<Bar> Bar {get;set;} 
    public string OtherProperty { get; set; } 
} 

:だからあなたのクラスは、このようなものに見えるかもしれません:あなたはXML構造を変更し、そのクラスを変更することができます

public List<Bar> Bars {get;set;} 

場合は、あなたのclient.Execute<Foo>(req);は何をしたいあなたを与える必要があります。

Foo`は、他のプロパティを持っている `ので不可能です
+0

。 – user3791372

関連する問題