〓 Admin 〓
製作しているゲームの近況や私事など
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
敵データやフィールドの管理なんかでデータをxmlに保持しておこうとしていました.
C#にはXmlSerializerという便利なものがありまして,クラスや配列なんかを一括で書きこんでくれるんですが…正しく利用しないとバグの嵐.
しかも「反映中にエラーが発生しました」というえらく抽象的なもので原因が全くわかりません.
そんなわけでこれの解決法を書き留めておきます.
C#にはXmlSerializerという便利なものがありまして,クラスや配列なんかを一括で書きこんでくれるんですが…正しく利用しないとバグの嵐.
しかも「反映中にエラーが発生しました」というえらく抽象的なもので原因が全くわかりません.
そんなわけでこれの解決法を書き留めておきます.
私の場合のこのエラー,主に何が原因かといいますと,書きこむクラスのコンストラクタになのですね.
XmlSerializerは書きこむクラスが空の引数を持つコンストラクタを持っていないとエラーを吐きます.
そんなわけでこんなダミーコンストラクタを用意しましょう.
public クラス名()
{
}
私の場合はこれで解決しました.
あとちなみに,つい忘れがちなXmlAttributeの設定も少し書いておきます.
とは言ってもリストを使う場合はリストの前に[XmlElemnt()].と書くだけなんですけどね.
[XmlElement()]
public List EncountObjects { set; get; }
こんな感じ.
書きたくないデータには[XmlIgnore()]を書いておきましょう.位置は[XmlElement]と同じです.
あとなにかバグになりうるとしたら変数をpublicにしていないとかプロパティのsetインデクサが無いとかでしょうか.これらは目で見てわかるようなエラーが出るので直すのはそう難しくないでしょう.
今回はこんなところで.
XmlSerializerは書きこむクラスが空の引数を持つコンストラクタを持っていないとエラーを吐きます.
そんなわけでこんなダミーコンストラクタを用意しましょう.
public クラス名()
{
}
私の場合はこれで解決しました.
あとちなみに,つい忘れがちなXmlAttributeの設定も少し書いておきます.
とは言ってもリストを使う場合はリストの前に[XmlElemnt()].と書くだけなんですけどね.
[XmlElement()]
public List
こんな感じ.
書きたくないデータには[XmlIgnore()]を書いておきましょう.位置は[XmlElement]と同じです.
あとなにかバグになりうるとしたら変数をpublicにしていないとかプロパティのsetインデクサが無いとかでしょうか.これらは目で見てわかるようなエラーが出るので直すのはそう難しくないでしょう.
今回はこんなところで.
PR
この記事にコメントする