2011-11-01 3 views
7

....NET XML을 시리얼 선택적 속성 다음 코드를 감안할 때

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

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

별칭이 우리에 대한 선택적 필드이지만, "별명"속성이 XML에서 누락 될 때 디시리얼라이저가 발생합니다. 어떻게 선택적으로 만들 수 있습니까? 스키마가 필요합니까? 어떤 throwings없이 이상한

답변

9

, 다음 프로그램은 나를 위해 잘 작동하기 때문에이 :

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 아직 아무 문제의 역 직렬화 생략 볼 수 있듯이.

관련 문제