我有以下类型
[Serializable, XmlType(Namespace="http://mycompany/foo"]
public sealed class Limit
{
[XmlElement(ElementName="Value1")]
public double Value1 {get;set;}
[XmlElement(ElementName="ComplexValue1")]
public ComplexValue ComplexValue1 {get;set;}
}
[Serializable, XmlType(Namespace="http://mycompany/foo"]
public sealed class ComplexValue
{
[XmlElement(ElementName="Item1")]
public double Item1 {get;set;}
[XmlElement(ElementName="Item2")]
public double Item2 {get;set;}
}
我想序列化为.settings文件。
当我将下面的blob复制到设置文件中时,我会以某种方式丢失ComplexValue1元素:
<?xml version="1.0" encoding="utf-16"?>
<Limit>
<Value1>20</Value1>
<ComplexValue1>
<Item1>2.0</Item1>
<Item2>5.0</Item2>
</ComplexValue1>
</Limit>
即。 Visual Studio将其转换为:
<?xml version="1.0" encoding="utf-16"?>
<Limit>
<Value1>20</Value1>
</Limit>
有一堆名称空间,我觉得这个问题无关紧要......
我错过了什么?
答案 0 :(得分:2)
您不需要XML序列化的Serializable
属性
我想你应该删除XmlType
属性来解决问题。
您指定了一个命名空间,但XML文件中没有?这也应该适合。
如果您愿意,可以使用XmlRoot
作为根节点
答案 1 :(得分:0)
可以在设置设计器中的每个设置基础上关闭生成默认值的代码。只需在属性窗口中将GenerateDefaultValueInCode设置为false,即可获取那些不需要它的设置。