2010-11-22 7 views
3

SerializableAttributeを使用して、クラスをシリアライズ可能としてマークすることができます。ただし、オブジェクトをシリアル化可能にすることはできません。そうすることの影響は何ですか?クラスをマーキングしないことの影響<Serializable()>

+1

かなり上手くいっています... http://stackoverflow.com/questions/2595104/why-do-you-have-to-mark-a-class-with-the-attribute-serializable –

答えて

0

私が理解しているように、サロゲートを使用してシリアライズ不可能なオブジェクトをシリアライズすることはできますが、そうするように促すメッセージはありますか?私はこのアプローチを使ってプライベートメンバーが連載されるとは思わない。

2

私は、「あなたはまだシリアル化可能にマーキングすることなくオブジェクトをシリアル化できます」と言いますと、自分がシリアライズ/デシリアライズを行っているということです。

[Serializable]アトリビュートを追加すると、サードパーティ製のコードにオブジェクトをシリアル化できることが示されます。これは、ASP.NETセッションや別のツール(Memcachedキャッシュなど)にオブジェクトを保存する場合に特に便利です。

1

タイプに[Serializable]を入れると、最も一般的なシナリオでは非常に便利で、オブジェクトをシリアライズ/デシリアライズするための多くのコードを書くことができます。テストとエラーが発生しやすい。また、バイナリ、XML、SOAPなどの基盤となるストレージメカニズムに関しても柔軟性を得ることができます。

タイプのいずれかに[Serializable]を入力する場合は、標準メカニズムを使用してシリアル化/逆シリアル化を正しく行うか、ISerializbleを実装してプロセスを自分で制御する必要があります。シリアライズを避けるべきことは、例えば以下のとおりです。イベントハンドラのプロパティ

特に、Serializableを使用するかどうかを決めるときは、フルオブジェクトグラフ(ルートオブジェクトとそのすべての関連付けとその関連付け)のフリーシリアル化を取得することが重要です。関与する。しかし、これが機能するには、Serializableと記されたグラフのすべてのタイプを持つ必要があります。

関連する問題