在这种情况下如何在Xml中序列化几个对象?

时间:2012-04-02 17:33:32

标签: c# xml-serialization linq-to-xml xmldocument xmlserializer

我在设计对象序列化时遇到了困难。

让我告诉你我的情景。我有一个普通的Configuration类,包含三个属性:

public sealed class Configuration
{
    public Configuration(string name, Levels level, ConfigurationSpec spec)
    {
        this.Name = name;
        this.Level = level;
        this.Spec = spec;
    }
    public string Name { get; set; }
    public Levels Level { get; set; }
    public ConfigurationSpec Spec { get; set; }
}

最后一个属性很重要,因为它是一个抽象类,它可以从其他类派生出来:

public class ConfigurationSpec { }
public class BinaryConfiguration : ConfigurationSpec
{
    public Range<int> Range1 { get; set; }
    public Range<int> Range2 { get; set; }

    public BinaryConfiguration()
    {
        this.Range1 = new Range<int>();
        this.Range2 = new Range<int>();
    }

    public BinaryConfiguration(Range<int> range1, Range<int> range2)
    {
        this.Range1 = range1;
        this.Range2 = range2;
    }
}

public class Range<T> where T : IComparable<T>
{
    private T _min;
    private T _max;

    public Range()
    {
    }

    public Range(T min, T max)
    {
        this.Min = min;
        this.Max = max;
    }

    public T Min
    {
        get { return _min; }
        set { _min = value; }
    }

    public T Max
    {
        get { return _max; }
        set { _max = value; }
    }

所有这些都包含ConfigurationSpec类。真正的问题是,我要添加许多来自Specs的{​​{1}},我的意思是数百个。

ConfigurationSpec

我想知道如何从XmlFile中编写和读取所有这些类以进行序列化。

如果您有任何疑问,请告诉我

1 个答案:

答案 0 :(得分:2)

只要您的Configuration类具有对ConfigurationSpec的引用,它就会正确地序列化/反序列化所需的所有对象。

只讨论ConfigurationSpec Configuration引用的类型将被序列化(当您序列化Configuration的实例时)。 换句话说,如果您有5个不同的ConfigurationSpec,那么您将传递给Configuration构造函数的那个​​将被序列化