0

小さなアプリケーションを作成していて、データをファイルに保存する必要があります。オブジェクトの保存についていくつか読みました。私は以前にJavaでこれを行ったことがありますが、それは数年前のことです。次に、オブジェクトの穴の配列を保存しましたが、C#で同じことができるかどうか、またどのように行うのでしょうか。

私はAnimalsと呼ばれるリストを使用しており、このタスクでの要求であったため、そのクラスもシリアル化しました。Animalクラスをシリアル化した場合、サブクラスをAnimalにシリアル化する必要はないと思いますか?

助けてくれてありがとう!

編集:

こんにちはアギアン!リストを保存するためのテストコードをいくつか作成しましたが、正しく実行されているかどうか疑問に思います。まだTry/Catchコードを追加していません。ファイルを開いてリストを読む必要がある場合、リストは全体としてロードされますか?フィードバックは高く評価されています!

filestream = new FileStream(filePath, FileMode.Create);
        BinaryFormatter b = new BinaryFormatter();
        b.Serialize(filestream, animals);
        filestream.Close();
4

3 に答える 3

1

オブジェクトのシリアル化は素晴らしいことです。オブジェクトの状態を保存し、他のシステムとオブジェクトを共有し、ビジネス層とアプリケーションのフロントエンドの間でオブジェクトを渡すことができます。

一般に、必要なシリアライゼーションの種類を常に述べます: バイナリ、xml、json? 2 つのシステムが互いに通信する方法は、選択に影響します。

あなたはxmlシリアライゼーションを必要としないと言います。そうでしょう?バイナリ シリアル化されたオブジェクトのログ記録、デバッグ、および追跡を管理するのは非常に困難です。XML は必要ありませんか? 大丈夫です。カスタム シリアライザーを使用しましょう。ただし、バイナリ シリアライゼーションは避けてください。必要でない限り!!

とにかく、ここにmsdnリンクがあります:

于 2012-07-26T14:58:23.627 に答える
0

簡単な例を実行しているように見えます。この場合、シリアル化可能を使用することはおそらく問題ありませんが、使用するのが非常に面倒であり、シリアル化可能としてマークされたクラスに変更を加えると、古いファイルが読み取れなくなります。

これにより、シリアル化は非常に一時的なストレージに適したものになります。たとえば、ステップ間でバッチプログラムの状態を維持したり、ネットワークを介してデータを転送したりできます。実際にファイルを作成している場合は、ファイル形式を設計したほうがよいでしょう。

使用するのに適した言語はxmlです。これは基本的にツリーのような構造を出力するために設計されており、すべてが位置ではなく名前で読み取られるため、簡単に追加できます。

非常に単純なデータがある場合は、テキスト形式を設計するだけです。いくつかの簡単なオプションは、タブまたはスペースの分離を使用することです。ポリモーフィックタイプがある場合は、それらすべてで機能するデータ構造を取得するためにこれについて少し考える必要があるかもしれません。または、すべてのサブタイプフィールドを持ってから、「タイプ」エントリで区別することができます。

(スペースで区切られています)
タイプNumberOfLegs NumberOfFins
Fish-2
Badger 4-
SeaDog 3.5 7

于 2012-07-26T09:22:58.903 に答える
0

クラスがシリアライズ可能なタイプのみで構成されている場合は、基本クラスとすべてのサブクラスをシリアライズ可能としてマークできます。これはSerializable属性で行われます

于 2012-07-26T08:55:03.607 に答える