如何序列化类和子类以获取此XML格式?

时间:2013-08-05 22:00:53

标签: c# serialization

我正在研究序列化的东西。现在我正在尝试使用子类序列化一个类。

这里是我想要zerialize的类和子类的骨架:

public class MyClass
{
    public class MySubClass
    {
        public static int MySubInt { get; set; }
        public static string MySubStr { get; set; }
    }

    public class MySubClass2
    {
        public static int MySubInt2 { get; set; }
        public static string MySubStr2 { get; set; }
    }

    public static int MyInt { get; set; }
    public static string MyStr { get; set; }
}

注意:如果看起来更好,子类可以是枚举。

我希望有类似的东西:

<MyClass>
    <MySubClass>
        <MySubInt>42</MySubInt>
        <MySubStr>Toto</MySubStr>
    </MySubClass>
    <MySubClass2>
        <MySubInt2>4242</MySubInt2>
        <MySubStr2>Titi</MySubStr2>
    </MySubClass2>
    <MyInt>84</MyInt>
    <MyStr>Tutu</MyStr>
</MyClass>

我知道如何序列化,但我不知道如何得到像我想要的预期结果......

编辑:我需要像这样使用这个类:

int toto = MyClass.MySubClass.MySubInt;
string titi = MyClass.MyStr;
string tutu = MyClass.MySubClass2.MySubStr2;
// ...

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以通过将嵌套类作为根类的属性公开来获得确切的输出。

public class MyClass
{

    Public MySubClass MySubClass {get;set;}
    Public MySubClass2 MySubClass2 {get;set;}

    public class MySubClass
    {
        public static int MySubInt { get; set; }
        public static string MySubStr { get; set; }
    }

    public class MySubClass2
    {
        public static int MySubInt2 { get; set; }
        public static string MySubStr2 { get; set; }
    }

    public static int MyInt { get; set; }
    public static string MyStr { get; set; }
}

然而,这是非常糟糕的设计,我会回避它。

我还强烈建议您进行一些搜索并阅读已发布的文章like this one