2

カスタムクラスでserializeを使用してxmlファイルを作成しようとしていますが、「xmlドキュメントの生成中にエラーが発生しました」という例外が発生します。

文字列のリストで試してみましたが、カスタムタイプでは機能しません...なぜidiaを持っている人がいますか?

public class MyXML
{
    List<MyClass> Mylist;
    public XmlSerializer serialize;

    public MyXML()
    {
        Mylist=new List<MyClass>();
        serialize = new XmlSerializer(typeof(List<MyClass>));
    }

    public void Save(List<MyClass> newList)
    {
        using (FileStream writer = File.OpenWrite(Directory.GetCurrentDirectory()  + "/files/MyNewFile.xml"))
        { serialize.Serialize(writer, newList); }
    }
}
4

1 に答える 1

0

トリックは次のとおりです。現在のコードを取得してラップします。

try {
    // create and use serializer
} catch(Exception ex) {
    while(ex != null) {
        Debug.WriteLine(ex.Message);
        ex = ex.InnerException;
    }
    throw;
}

XmlSerializer は実際には、何かをシリアル化/逆シリアル化できない場合に非常に詳細な理由を提供しますが、それらは内部例外に隠されています。上記により、デバッグ出力で問題が何であるかを確認できます。

ユージュアル・サスペクツ:

  • タイプは完全に公開されている必要があります
  • 型には、パラメーターなしのパブリック コンストラクターが必要です
  • 実際のインスタンスがサブクラスの場合は、事前に宣言する必要があります
于 2012-12-09T13:42:13.347 に答える