2012-02-07 10 views
5

「リスト」プロパティを反映しようとするとInvalidOperationExceptionが発生します。それがArmyListingをシリアル化しようとするとき。シリアル化時のInvalidOperationException

すべての変数はpublicです。 チェックリストをシリアル化することができます。私が見つけたほとんどのエラーは、辞書を使っている人がどこにいるのかわからない。

なぜシリアル化されないように見えるのですか?

//[Serializable] 
public class ArmyListing 
{ 

    [XmlElement("army")] 
    public List<Army> listing { get; set; } 

    public void SerializeToXML(ArmyListing armyListing) 
    { 
     try 
     { 
      XmlSerializer serializer = new XmlSerializer(typeof(ArmyListing)); 
      TextWriter textWriter = new StreamWriter(@"C:\Test\40k.xml"); 
      serializer.Serialize(textWriter, armyListing); 
      textWriter.Close(); 
     } 
     catch (Exception ex) { } 
    } 
} 

//[Serializable] 
public class Army 
{ 
    //public Army(); 

    [XmlAttribute] 
    [XmlArray("unit-category")] 
    public List<UnitCategory> settingconstraints { get; set; } 
    [XmlAttribute("name")] 
    public string armyName { get; set; } 
} 

//[Serializable] 
public class UnitCategory 
{ 
    //public UnitCategory(); 

    [XmlArray("unit-type")] 
    public List<UnitType> setting { get; set; } 
    [XmlAttribute("name")] 
    public string unitCategoryName { get; set; } 
} 

//[Serializable] 
public class UnitType 
{ 
    //public UnitType(); 

    [XmlArray("unit")] 
    public List<Unit> setting { get; set; } 
    [XmlAttribute("name")] 
    public string unitTypeName { get; set; } 
} 

//[Serializable] 
public class Unit 
{ 
    //public Unit(); 

    [XmlAttribute("name")] 
    public string unitName { get; set; } 
    [XmlAttribute("composition")] 
    public string compsition { get; set; } 
    [XmlAttribute("weapon-skill")] 
    public string weaponSkill { get; set; } 
    [XmlAttribute("ballistic-skill")] 
    public string ballisticSkill { get; set; } 
    [XmlAttribute("strength")] 
    public string strength { get; set; } 
    [XmlAttribute("toughness")] 
    public string T { get; set; } 
    [XmlAttribute("wounds")] 
    public string wounds { get; set; } 
    [XmlAttribute("initiative")] 
    public string initiative { get; set; } 
    [XmlAttribute("attacks")] 
    public string attacks { get; set; } 
    [XmlAttribute("leadership")] 
    public string leadership { get; set; } 
    [XmlAttribute("saving-throw")] 
    public string saveThrow { get; set; } 
    [XmlAttribute("armour")] 
    public string armour { get; set; } 
    [XmlAttribute("weapons")] 
    public string weapons { get; set; } 
    [XmlAttribute("special-rules")] 
    public string specialRules { get; set; } 
    [XmlAttribute("dedicated-transport")] 
    public string dedicatedTransport { get; set; } 
    [XmlAttribute("options")] 
    public string options { get; set; } 
} 

//Form 
namespace ThereIsOnlyRules 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     ArmyListing armyListing = new ArmyListing(); 
     armyListing.SerializeToXML(armyListing); 
    } 
} 
} 
+0

1^_ ^! –

答えて

10

これは動作しません一部です:

[XmlAttribute] 
[XmlArray("unit-category")] 

[XmlArray] & [XmlAttribute]は両方とも同じプロパティに定義することはできません。

あなたが問題に到達するまで.InnerExceptionにドリル続ける場合は、シリアライザもあなたにこのことを伝えます:Warhammer40k参照の

There was an error reflecting type 'ArmyListing'. 
There was an error reflecting property 'listing'. 
There was an error reflecting type 'Army'. 
There was an error reflecting property 'settingconstraints'. 
XmlAttribute and XmlAnyAttribute cannot be used in conjunction with XmlElement, XmlText, XmlAnyElement, XmlArray, or XmlArrayItem. 
+2

(これを指すメッセージが追加されました;これは問題ありません) –

+0

Ty - 私はそれを考えていたはずです。 :-) –

関連する問題