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 s
[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
и не сериализуется в «адрес электронной почты», как я ожидал бы, пока все остальные будут ork просто отлично. Кто-нибудь знает, почему это может произойти или как это исправить?
Вам не нужен атрибут выше этого класса 'public class ContactData' ..? '[SerializeAs (Name =" email-addresseses ")]' – MethodMan
Нет, ContactData правильно сериализует «контактные данные», поскольку свойство ContactData в классе Person украшено атрибутом SerializeAs. Кажется, это просто EmailAddress, у которого есть проблема. – Scott
Вы могли бы попытаться называть его чем-то другим или удалить '-', чтобы увидеть, является ли конфликт конфликтом. Я видел что-то подобное раньше, но не могу вспомнить ссылку на сайт, который я использовал для исправления той же проблемы. – MethodMan