3
RestSharp似乎并没有被重视,我已经装饰了我的类名的一个与“SerializeAs”属性:RestSharp系列化不序列化类的名称正确
人
[Serializable, SerializeAs(Name = "person")]
public class Person
{
[SerializeAs(Name = "first-name")]
public string FirstName { get; set; }
[SerializeAs(Name = "contact-data")]
public ContactData ContactData { get; set; }
}
联络资料
public class ContactData
{
[SerializeAs(Name = "email-addresses")]
public List<EmailAddress> EmailAddresses { get; set; }
}
EmailAddres小号
[SerializeAs(Name = "email-address")]
public class EmailAddress
{
[SerializeAs(Name = "address")]
public string Address { get; set; }
[SerializeAs(Name = "location")]
public string Location { get; set; }
}
我使用下面的代码序列化XML:
var request = new RestRequest("people/{id}.xml", Method.PUT);
request.AddParameter("id", person.Id, ParameterType.UrlSegment);
request.XmlSerializer = new XmlSerializer();
request.AddBody(person);
然而,生成的XML看起来是这样的:
<person>
<first-name>Scott</first-name>
<contact-data>
<email-adresses>
<EmailAddress>
<address>[email protected]</address>
<location>Work</location>
</EmailAddress>
</email-adresses>
</contact-data>
</person>
你可以看到<EmailAddress>
元素似乎忽略了SerializeAs
属性,并没有被序列化为“email-address”,正如我所期望的那样,而所有其他的w奥克就好了。有谁知道为什么这可能会发生或如何解决它?
你不需要这个类'公共类ContactData'上面的属性吗? '[SerializeAs(Name =“email-addresseses”)]' – MethodMan 2013-03-22 15:43:10
不,ContactData序列化为“contact-data”,因为Person类中的ContactData属性使用SerializeAs属性装饰。这似乎只是EmailAddress有问题。 – Scott 2013-03-22 15:45:25
你可以尝试命名它别的东西或删除'-'看看它是否是一个命名冲突..我以前见过类似这样的东西,但离手不记得我用来解决同一问题的网站的参考 – MethodMan 2013-03-22 15:50:47