2014-03-03 32 views
1

的問題是我有一個測試類和TestVariable,我想序列化測試類沒有序列化TestVariable:如何選擇性地使用XmlSerializer的

public class TestClass 
{ 

    public int TestVariable 
    { 
     get; 
     set; 

    } 
    public int ControlVariable 
    { 
     get; 
     set; 
    } 

    public TestClass() 
    { 
     TestVariable = 1000; 
     ControlVariable = 9999; 
    } 
} 

該功能的代碼序列化字段和屬性序列號:

public static void PrintClass() 
{ 
    new XmlSerializer(typeof(TestClass)).Serialize(Console.Out, new TestClass()); 
} 

只是覺得我會回答這個,因爲我看到知道簡潔的答案這個非常簡單的問題。

回答

1

包括名稱空間System.Xml.Serialization並將屬性[XmlIgnore]添加到要在序列化中排除的字段或屬性。

修改上面的代碼是這樣的:

public class TestClass 
{ 

    [XmlIgnore] 
    public int TestVariable 
    { 
     get; 
     set; 
    } 

    public int ControlVariable 
    { 
     get; 
     set; 
    } 

    public TestClass() 
    { 
     TestVariable = 1000; 
     ControlVariable = 9999; 
    } 
} 

這將導致TestVariable從序列完全排除。

+0

我發現這種方法不靈活,因爲它是在編譯期間定義的。恕我直言,[條件XML序列化](http://stackoverflow.com/questions/4094985/conditional-xml-serialization)使用['ShouldSerialize *'](http://msdn.microsoft.com/en-us/library/ vstudio/53b8022e(v = vs.110).aspx)方法更加靈活。 – Yuriy

+0

我不得不同意,它肯定不靈活,但有時你可能不需要應用程序化方法給你的靈活性水平。 就我而言,我有一個類,在編譯時我知道我永遠不需要序列化這些值。所以我選擇了一個簡單的解決方案來完成這項工作。 我找不到一個非常簡單的解決方案,所以我發佈了我的問題和發現,以便其他人可以從中受益。 – Aelphaeis

相關問題