深度xml序列化结构选项

5 c# xml-serialization

我有下面显示的类和结构.如果我使用xmlserializer序列化类,我得到:

<Test>
<TestNumber1> 5 </ TestNumber1>
<InnerTest />
</ Test>

什么是最简单的方法使InnerTest序列化正确(最好使用xmlserializer)而不给Number属性一个setter?

谢谢,尼克

public class Test 
{ 
    private InnerTest innerTest; 
    private int testNumber; 


    public Test() 
    { 
        this.innerTest = new InnerTest(); 
        this.testNumber = 5; 
    } 


    public int TestNumber1 
    { 
        get { return this.testNumber; } 
        set { this.testNumber = value;} 
    } 


    public InnerTest InnerTest 
    { 
        get { return this.innerTest; } 
        set { this.innerTest = value;} 
    } 


} 


public struct InnerTest 
{ 
    private int number; 


    public InnerTest(int number) 
    { 
        this.number = number; 
    } 
    public int Number{get { return number; }} 
} 
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 1

我自己从未这样做过,但我怀疑您只需要实现IXmlSerialized接口即可。

据我所知,这意味着你必须使你的结构可变 - 这是一个痛苦。理想情况下,XmlSerializer 应该识别您的类型是否具有具有特定签名的构造函数,但由于这似乎不是一个选项(据我所知),因此值得使用显式接口实现来实现该接口,以至少阻止用户自己直接使用它。

我想知道其他结构(例如 DateTime)如何管理...也许它们在 XmlSerializer 中有明确的支持。