バイナリシリアル化するためのショートカットは、オブジェクト内のすべてのプロパティがありますか?

StackOverflow https://stackoverflow.com/questions/3428916

質問

すべてのパブリックプロパティがシリアル化されたのでなければならず、プロパティは、単純な(単なる数字や文字列、または既にISerializableを実装するオブジェクト)、にせずにそれを行うための簡単な方法がありますされたオブジェクトが存在する場合GetObjectData(SerializationInfo info, StreamingContext context)と引数として毎回SerializationInfoを取るコンストラクタを作成する?

私はそれが反射して手動で行うことができることを知っているが、それを行うには、.NET Frameworkの内部の魔法の方法がありますか?

<時間> だから、正しい答えはあります:

  

ISerializableを実装しようとしないでください - それは、カスタム直列用です。代わりにあなたのクラス宣言の前に[Serializableを]属性の権利を追加します。

役に立ちましたか?

解決

にBinaryFormatterクラスを試してみてください - あなたが必要なものを行う必要があります。

EDIT:あなたはにBinaryFormatterから派生していない - それはあなたがあなたのシリアル化を行うために使用するユーティリティクラスです。ここでドキュメントからコピーされた例である

MyObject obj = new MyObject();
obj.n1 = 1;
obj.n2 = 24;
obj.str = "Some String";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top