我正在尝试扩展一个包含各种颜色的 XML 配置文件,目前它看起来像这样。
<Colors>
<FooColor1>0x0BD000</FooColor1>
<FooColor2>0x11C711</FooColor2>
<FooColor3>0x224466</FooColor3>
<FooColor4>0xAA3333</FooColor4>
<FooColor5>0x886644</FooColor5>
</Colors>
这些都以字符串的形式出现,一切正常且花花公子。问题就在这里,正如我所说,我正在尝试扩展文件,新格式将是这样的
<Colors>
<DetailColors>
<FooColor1>0x0BD000</FooColor1>
<FooColor2>0x11C711</FooColor2>
<FooColor3>0x224466</FooColor3>
<FooColor4>0xAA3333</FooColor4>
<FooColor5>0x886644</FooColor5>
</DetailColors>
<GoalColors>
//Similar stuff, not actually in yet.
</GoalColors>
</Colors>
但是,使用单层的序列化样式似乎无法处理嵌套。
[System.SerializableAttribute()]
public class GraphColors
{
public string FooColor1 { get; set; }
public string FooColor2 { get; set; }
public string FooColor3 { get; set; }
public string FooColor4 { get; set; }
public string FooColor5 { get; set; }
}
[System.SerializableAttribute()]
public class DetailColors
{
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public GraphColors ColorSchema { get; set; }
}
[System.SerializableAttribute()]
public class Colors
{
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
private DetailColors CombinedColors { get; set; }
public static GraphColors getColorsFromConfig()
{
return new XmlSerializer(Colors).Deserialize(path).CombinedColors.ColorSchema
}
}
当没有中间对象时,这工作得很好,但现在中间对象给出了一个空值。任何帮助将不胜感激。