2011-11-01 9 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とはまだありません、問題のデシリアライズから省略されて見ることができるように。

関連する問題