編輯:我問我thougt的嘗試一些問題的時刻.. 我設置XML命名空間屬性的請求,該訣竅..RestSharp反序列化返回空屬性,但xml.deserialize測試工作
request.XmlNamespace = "http://musicbrainz.org/ns/mmd-2.0#";
但我真的不明白,爲什麼...
接下來的問題是越來越RestSharp識別XML atributes爲對象屬性
我在這個週末的大部分時間裏都一直在努力,我只是不明白這一點。
我想寫一個包裝圓RestFul web服務(MusicBrainz)。我正在測試一個簡單的例子:獲取一位藝術家的細節並將其放入自定義藝術家對象中。
當我做了對RESTClient實現執行它最終確定,但我的對象屬性爲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以外的東西解決了它:-) –