2011-11-01 84 views
7

考慮下面的代碼....NET XML序列化的可選屬性

[XmlType("Field")] 
public class SearchField 
{ 
    [XmlAttribute("alias")] 
    public string Alias; 

    [XmlAttribute("entity")] 
    public string Entity; 
} 

別名對我們來說是一個可選字段,但是當「別名」屬性從XML失蹤解串器拋出。你如何使它可選?是否需要架構?

回答

9

奇怪,因爲下面的程序正常工作對我來說,沒有任何throwings:

using System; 
using System.IO; 
using System.Xml; 
using System.Xml.Serialization; 

[XmlType("Field")] 
public class SearchField 
{ 
    [XmlAttribute("alias")] 
    public string Alias; 

    [XmlAttribute("entity")] 
    public string Entity; 
} 

class Program 
{ 
    static void Main() 
    { 
     using (var reader = new StringReader("<Field entity=\"en\" />")) 
     { 
      var serializer = new XmlSerializer(typeof(SearchField)); 
      var s = (SearchField)serializer.Deserialize(reader); 
      Console.WriteLine(s.Alias); 
      Console.WriteLine(s.Entity); 
     } 
    } 
} 

正如你可以看到alias屬性輸入XML,但沒有問題的反序列化省略。