我在设计对象序列化时遇到了困难。
让我告诉你我的情景。我有一个普通的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中编写和读取所有这些类以进行序列化。
如果您有任何疑问,请告诉我
答案 0 :(得分:2)
只要您的Configuration
类具有对ConfigurationSpec
的引用,它就会正确地序列化/反序列化所需的所有对象。
只讨论ConfigurationSpec
Configuration
引用的类型将被序列化(当您序列化Configuration
的实例时)。
换句话说,如果您有5个不同的ConfigurationSpec
,那么您将传递给Configuration
构造函数的那个将被序列化