EDIT çalışır: Ben bir şey çalışmakla yestoday soru soruldu anı .. Ben istek üzerine XmlNamespace özelliğini ayarlayın ettik ve o hile yaptı ..RestSharp Deserialize boş özelliklerini döndürür ama xml.deserialize testi
request.XmlNamespace = "http://musicbrainz.org/ns/mmd-2.0#";
Sonraki sorun RestSharp nesnesi özellikleriyle xml atributes tanımaya oluyor
Ama gerçekten neden olarak anlayamıyorum ...
Bu hafta sonu en çok bunun için uğraşıyorum ve işe yaramayacağım.
RestFul webservice (MusicBrainz) yuvarlak bir sarıcı yazmayı deniyorum. Basit bir örnekle test ediyorum: bir sanatçının ayrıntılarını alın ve özel bir Artist nesnesine yerleştirin.
Bir RestClient üzerinde Yürütme yok Tamam biter ama benim nesne özellikleri boş olduğunda .. Ama XmlDeserializer ile deserialization test ederken ObjectProperties dolu (Ama bir öznitelik karşılık mülkler için, ama ben edilir 'Daha sonra ele alacağım'
Yanıtın serileştirilmesi ile nesneyi response.data içine koymak arasında ne olur? Oldukça mümkün o .. ben bu kadar yapıyorum, bir "acemi" hata RestSharp ile ilk adımlardır
Yardım çok takdir ..
Returnded xml geçerli:
<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>
Benim sınıfı: aşağıdaki kod çıkış özelliklerinde
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; }
}
doldurulur
var output = xml.Deserialize<Artist>(response);
Ama
var response = client.Execute<T>(request);
Komple kodu (Ben basitlik uğruna jenerik yönteminde test kodu koyduk)
çağrılırken aynı tepkiyi almıyor: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;
}
İlgilendiğim bir çözüm buldum :-) –
@AndersBornholm. Bu projede biraz iş yaptığımdan beri uzun zaman oldu. Ama benim hafızamda "çözüm" kelimesi RestSharp talebinde bir isim alanı açmaktı. Gerçekten çaresizseniz, projeyi kazabilirim ve daha yakından bakarım ... – FasterRaf
Aslında üzerinde çalışmadım. Projem uzun bir süre için. Doğru bir şekilde hatırlarsam restsharp dışındaki bir şeyi kullanarak çözdüm :-) –