2009-06-10 10 views
0

公開宣言は、クラスをシリアライズ可能にするための要件ですか?私は[Serializable]とマークされたすべてのクラスも公開と宣言されているいくつかのコードを調べてきました。私はこれを示す正式な文書を見つけることができませんでした。.NET:パブリック宣言は、クラスをシリアライズ可能にする要件ですか?

+0

私は一般的に、ほとんどのクラスは公開されていると思います。 –

+0

必ずしもそうではありませんが、ダニエル、確かに解決策の計画と設計に依存します。 –

答えて

3

いいえ、Serializableのような要件はありません。ストリームに永続化されるデータは他の人と共有される可能性が非常に高く、パブリッククラスの選択を促すので、公開クラスでSerializableが表示されることは驚くことではありません。

0

私はよく分かりません。プライベートネストされたクラスはどうですか?

(public)外部クラスが直列化可能な場合は、おそらく内部クラスも直列化したいと思うでしょう。

0

は限らない、おそらくあなたは別のオブジェクトの状態を表し、直列化された内部クラスを持つオブジェクトを持って、それはあまりにも

0

非常に有効である直列化に依存します。 AFAIK、バイナリシリアル化(つまり、 - [Serializable])はパブリックメンバのアクセスを必要としません。クラスのインメモリスナップショットを取るためのいくつかのブードーを行います。

XmlSerialization(およびJsonSerializationなど)は、通常、クラスにpublicで、必要なパラメータのないコンストラクタを必要とし、すべてのパブリックプロパティまたはフィールドを自動的にシリアル化します。

関連する問題