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>

つまり、VisualStudioはそれを次のように変換します。

<?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 に答える