C# 序列化的问题

2025-12-17 23:34:43
推荐回答(2个)
回答1:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.IO;
using System.Windows.Forms;

namespace Test
{
    public class Dog
    {
        string name;
        string color;
        int age;
        Cat cat;
        [NonSerialized]
        private static Dog _instance;
        [XmlIgnore]
        public static Dog Instance
        {
            get
            {
                if (Dog._instance == null)
                {
                    Dog._instance = new Dog();
                }
                return Dog._instance;

            }
            set
            {
                Dog._instance = value;
            }
        }
        static Dog()
        {
        }
        public static void LoadFromXmlFile()
        {
            FileStream fileStream = new FileStream("dog.xml", FileMode.Open, FileAccess.Read);
            object obj = new XmlSerializer(typeof(Dog)).Deserialize((Stream)fileStream);
            fileStream.Close();
            Dog.Instance = (Dog)obj;
        }
        public static void SaveToXmlFile()
        {
            FileStream fileStream = new FileStream("dog.xml", FileMode.Create, FileAccess.Write);
            new XmlSerializer(typeof(Dog)).Serialize((Stream)fileStream, (object)Dog.Instance);
            fileStream.Close();
        }

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public string Color
        {
            get { return color; }
            set { color = value; }
        }

        public int Age
        {
            get { return age; }
            set { age = value; }
        }

        public LoginTest.Cat Cat
        {
            get
            {
                if (cat == null)
                {
                    cat = new Cat();
                }
                return cat;
            }
            set { cat = value; }
        }
    }
    public class Cat
    {
        public Cat()
        {
        }
        string name;
        string color;
        int age;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public string Color
        {
            get { return color; }
            set { color = value; }
        }
        public int Age
        {
            get { return age; }
            set { age = value; }
        }
    }
}
//测试代码
Dog.LoadFromXmlFile();
Dog.Instance.Age = 10;
Dog.Instance.Color = "Yellow";
Dog.Instance.Name = "Snoopy";
Dog.Instance.Cat.Age = 100;
Dog.Instance.Cat.Name = "Miky";
Dog.Instance.Cat.Color = "Black";
Dog.SaveToXmlFile();

一样像其他变量用啊,你把类当做类型来用就行了

回答2:

举个例子
public class A
{
public int age;
public strng name;

}
public class B
{
public A member;

public int index;

}

实例化B的对象 B b = new B(){member = new A(){age = 10, name="ad"}, index = 0};
b序列化之后的结果类似于

0


10

ad