バイナリシリアル化するためのショートカットは、オブジェクト内のすべてのプロパティがありますか?
-
26-09-2019 - |
質問
のすべてのパブリックプロパティがシリアル化されたのでなければならず、プロパティは、単純な(単なる数字や文字列、または既に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();
所属していません StackOverflow