EDIT作品:私は私が何かをしようとのthougtの質問をした瞬間を... 私はリクエストに応じてXmlNamespaceプロパティを設定して、それがトリックをしました。..RestSharpデシリアライズは、空のプロパティを返しますがxml.deserializeテストは
request.XmlNamespace = "http://musicbrainz.org/ns/mmd-2.0#";
次の問題はRestSharpは、オブジェクトのプロパティとしてXML atributesを認識するようになっている
しかし、私は本当に理由を理解していない...
私は週末のうちにこれを乗り越えてきました。
私はRestFul webservice(MusicBrainz)のラッパーを作成しようとしています。私は簡単な例でテストしています:あるアーティストの詳細を取得し、それをカスタムArtistオブジェクトに入れます。
私はRestClientでExecuteを実行するとOKですがオブジェクトのプロパティはnullです。 しかし、XmlDeserializerで逆シリアル化をテストすると、objectpropertiesが埋められます(属性に対応するプロパティではなく、
応答の逆シリアル化とオブジェクトのresponse.dataへの置き換えはどうなりますか? かなり可能それが..私はこのよう作ってるんだ「初心者」エラーがRestSharpと私の最初のステップです
ヘルプははるかに高く評価されるだろう ..
Returnded xmlです:
<metadata>
<artist type="Group" id="f1548c5b-329e-4036-921c-02213a04b525">
<name>Uriah Heep</name>
<sort-name>Uriah Heep</sort-name>
<country>GB</country>
<life-span>
<begin>1970</begin>
</life-span>
</artist>
</metadata>
マイクラス:次のコード出力特性において
public class Artist
{
public int Id { get; set; }
public string Type { get; set; }
public string Name { get; set; }
public string SortName { get; set; }
public string Country { get; set; }
}
が充填され
var output = xml.Deserialize<Artist>(response);
しかし、同じレスポンスの完全なコード(私は簡単にするために、一般的な方法でテストコードを入れている)
var response = client.Execute<T>(request);
を呼び出すときの特性を満たしていません:
public T Execute<T>(RestRequest request) where T : new()
{
var client = new RestClient();
client.BaseUrl = BaseUrl;
client.Authenticator = null;
//does not fill properties
var response = client.Execute<T>(request);
if (response.ErrorException != null)
{
throw response.ErrorException;
}
var xml = new XmlDeserializer();
//fills properties
var output = xml.Deserialize<Artist>(response);
return response.Data;
}
私はあなたが興味を持っている解決策を見つけました:-) –
@AndersBornholm。私はこのプロジェクトでいくつかの作業をして以来、長い時間が経ちました。しかし、私の記憶には、RestSharpの要求に名前空間を設定するという "解決策"がありました。あなたが本当に必死であれば、私はプロジェクトを掘り起こしてより詳しく見ることができます... – FasterRaf
私は実際に働いていません私のプロジェクトは長い間。私が正しく覚えていれば、restsharp以外の何かを使って解決しました:-) –