2010-01-18 69 views
5

我想創建一個c#對象用於字符串屬性的序列化/反序列化。 屬性需要生成一個元素,也有一個屬性:C#XML名稱屬性的字符串元素

如:

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

如果屬性是一個字符串,我不能看到如何添加的屬性,如果註釋是一個對象與它產生的名稱和值屬性:

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

任何想法?

回答

6

您將需要暴露在這些類型的兩個屬性,並使用[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模型。