0

重複の可能性:
XmlSerializerを使用して整数の配列をシリアル化する

Windows 8アプリをC#で作成していますが、カスタムオブジェクトをシリアル化しようとすると、「タイプを反映したエラーが発生しました」というエラーメッセージが表示されました。内部の例外を調べたところ、多次元配列をシリアル化できないという事実に出くわしました。

私は何か間違ったことをしていますか、それとも正しいですか?

私が正しい場合、intとint [、]配列のクラスをパックして、それらをromaingストレージに送信する方法はありますか?ありがとうございました。

私はこの.dllを使用しています: http ://winrtstoragehelper.codeplex.com/

これが私のコードです:

var objectStorageHelper = new ObjectStorageHelper<BaseballTeam>(StorageType.Roaming);
await objectStorageHelper.SaveAsync(team);

BaseballTeamがタイプであり、特定のオブジェクトをチーム化します。

4

2 に答える 2

1

そのライブラリを使用していません。XmlSerializer多次元配列をサポートしないを使用します( http://winrtstoragehelper.codeplex.com/SourceControl/changeset/view/60a57faeb36a#WinRtUtility%2fWinRtUtility%2fObjectStorageHelper.csのソースを参照してください)。他のシリアライザーを引き続き使用でき(たとえば、IIRC JSON.NETは多次元配列をサポートします)、FileAPIを使用してシリアル化されたオブジェクトをローミングストレージに書き込むだけです。

または、それを行う別のライブラリを選択してください。

于 2012-09-28T23:22:05.600 に答える
1

ドキュメントで明示的に言及されているだけですDataContractSerializer(「コレクションタイプの組み合わせ(コレクションのコレクションを持つ)は許可されています。ジャグ配列はコレクションのコレクションとして扱われます。多次元配列はサポートされていません。」「高度なコレクションルール」を参照)が、多次元配列は可能です。 XmlSerializerによってもシリアル化されません(簡単なテストでは、使用しているライブラリがなくてもかなり明確に示されます)。

別のシリアライザーを見つけるか、シリアル化のためにジャグ配列に変換する(そして逆シリアル化すると多次元に戻す)ことができます。

編集:非常によく似た質問が以前に行われたことがあり、その答えはあなたにとって良い回避策になる可能性があります:XmlSerializerを使用して整数の配列をシリアル化する

于 2012-09-28T23:23:17.207 に答える