C# 在这种情况下,如何在Xml中序列化多个对象?

C# 在这种情况下,如何在Xml中序列化多个对象?,c#,xml-serialization,linq-to-xml,xmldocument,xmlserializer,C#,Xml Serialization,Linq To Xml,Xmldocument,Xmlserializer,我的设计在对象序列化方面遇到了困难 让我向你展示我的场景。我有一个常规配置类,包含三个属性: public sealed class Configuration { public Configuration(string name, Levels level, ConfigurationSpec spec) { this.Name = name; this.Level = level; this.Spec = spec; }

我的设计在对象序列化方面遇到了困难

让我向你展示我的场景。我有一个常规
配置
类,包含三个属性:

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; }
    }
我想知道如何从一个XML文件中写入和读取所有这些类以进行序列化


如果您有任何疑问,请让我知道

只要您的
配置
类引用了
配置规范
,它将正确地序列化/反序列化所需的所有对象

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

,如果可以用一个示例来说明我,请?另一个疑问,正如您在我的情况中所看到的,通过XmlSerialization或XDocument从LINQQ进行序列化会更好吗?您可以使用专门为此而设计的XmlSerialization
<Configuration>
    <!-- Maybe here it'll be good specify the type -->
    <ConfigurationSpec>
        <Range1 X="2" Y="4" />
        <Range2 X="5" Y="10" />
    </ConfigurationSpec>
</Configuration>