1

我有以下类型

[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>

有一堆我认为对这个问题无关紧要的命名空间......

我错过了什么?

4

2 回答 2

2
  1. 您不需要SerializableXML 序列化的属性

  2. 我想你应该删除该XmlType属性来解决问题。

  3. 您指定了一个命名空间,但 XML 文件中没有?这也应该适合。

  4. 如果您愿意,可用于XmlRoot根节点

于 2010-08-27T10:14:26.113 回答
0

可以在设置设计器中基于每个设置关闭为默认值生成代码。对于那些不需要的设置,只需在属性窗口中将 GenerateDefaultValueInCode 设置为 false。

于 2011-04-13T10:52:21.790 回答