3

RestSharp を使用して POCO オブジェクトを XML にシリアライズする際に問題があります。私の POCO オブジェクトは次のようになります。

[SerializeAs(Name = "person")]
public class Person
{
    [SerializeAs(Name = "author-id")]
    public int? AuthorId { get; set; }

    [SerializeAs(Name = "background")]
    public string Background { get; set; }

    [SerializeAs(Name = "first-name")]
    public string FirstName { get; set; }

    [SerializeAs(Name = "last-name")]
    public string LastName { get; set; }

    [SerializeAs(Name = "id")]
    public int? Id { get; set; }

    [SerializeAs(Name = "company-name")]
    public string CompanyName { get; set; }

    [SerializeAs(Name = "title")]
    public string Title { get; set; }

    [SerializeAs(Name = "contact-data")]
    public ContactData ContactData { get; set; }

    [SerializeAs(Name = "tags")]
    public List<tag> Tags { get; set; }
}

連絡先データ

public class ContactData
{
    [SerializeAs(Name = "addresses")]
    public List<object> Addresses { get; set; }

    [SerializeAs(Name = "phone-numbers")]
    public List<object> PhoneNumbers { get; set; }

    [SerializeAs(Name = "email-adresses")]
    public List<object> EmailAddresses { get; set; }

    [SerializeAs(Name = "web-addresses")]
    public List<object> WebAddresses { get; set; }
}

電子メールアドレス

[SerializeAs(Name = "email-address")]
public class EmailAddress
{
    [SerializeAs(Name = "address")]
    public string Address { get; set; }

    [SerializeAs(Name = "id")]
    public int? Id { get; set; }

    [SerializeAs(Name = "location")]
    public string Location { get; set; }
}

これにより、シリアル化すると次の XML が得られます。

<person>
    <first-name>my firstname</first-name> 
    <contact-data>
        <email-adresses>
            <EmailAddress>
                <address>my@email.com</address> 
                <location>Work</location> 
             </EmailAddress>
        </email-adresses>
    </contact-data>
    <tags>
        <tag>
            <name>Nyhedsbrev</name> 
        </tag>
    </tags>
</person>

お気づきかもしれませんが、EmailAddressSerializeAsは無視されます。Listこれは、Personオブジェクトが正しくシリアル化されているためである可能性があると思います<person>

クラス名自体の代わりに注釈を使用してシリアル化するには、リスト (またはコレクション) 内の POCO オブジェクトが必要です。

誰かがこれに関する回避策を見つけましたか?

4

1 に答える 1

1

これをRestSharpのバグにトレースしました。Gitリポジトリをフォークして修正し、プルリクエストを送信しました。

于 2013-03-23T00:18:21.500 に答える