5

文字列プロパティを使用してシリアライゼーション/デシリアライゼーション用の ac# オブジェクトを作成しようとしています。プロパティは要素を生成し、属性も持つ必要があります。

例えば:

...
<Comment Name="CommentName"></Comment>
...

プロパティが文字列の場合、属性を追加する方法がわかりません。また、コメントが Name プロパティと Value プロパティを持つオブジェクトである場合は、次のように生成されます。

...
<Comment Name="CommentName">
    <Value>comment value</Value>
</Comment>
...

何か案は?

4

1 に答える 1

6

これらの 2 つのプロパティを型で公開し、[XmlText]属性を使用して、余分な要素を生成しないことを示す必要があります。

using System;
using System.Xml.Serialization;
public class Comment
{
    [XmlAttribute]
    public string Name { get; set; }
    [XmlText]
    public string Value { get; set; }
}
public class Customer
{
    public int Id { get; set; }
    public Comment Comment { get; set; }
}
static class Program
{
    static void Main()
    {
        Customer cust = new Customer { Id = 1234,
            Comment = new Comment { Name = "abc", Value = "def"}};
        new XmlSerializer(cust.GetType()).Serialize(
            Console.Out, cust);
    }
}

これらのプロパティをオブジェクト自体 (Customer私の例ではインスタンス) にフラット化する場合は、オブジェクト モデルが目的に適合するふりをする追加のコードXmlSerializer、または完全に別の DTO モデルが必要になります。

于 2010-01-18T12:24:56.107 に答える