でサードパーティのライブラリ型オブジェクトをシリアル化したとしBinaryFormatter
ます。このライブラリを参照しないアセンブリは、バイトを逆シリアル化しようとします。それはうまくいきますか?
object
正しい型にキャストされるとは思っていません。インスタンスとして取得して、グループ化して再度シリアル化できるようにしたいだけです。
でサードパーティのライブラリ型オブジェクトをシリアル化したとしBinaryFormatter
ます。このライブラリを参照しないアセンブリは、バイトを逆シリアル化しようとします。それはうまくいきますか?
object
正しい型にキャストされるとは思っていません。インスタンスとして取得して、グループ化して再度シリアル化できるようにしたいだけです。
これは正常に機能するはずですが、そのライブラリがアプリと共にデプロイされている場合のみです。直接参照する必要はありません。
シリアル化中にBinaryFormatter
、型情報と共に完全なアセンブリ名 (表示名、公開キー トークン、バージョン番号) が格納されます。これは、デシリアライザーが停止してそのアセンブリを再度読み込むのに十分な情報です。パス情報は保存されないため、逆シリアル化を行うアプリにアセンブリを展開する必要があることに注意してください。
いいえ; 型自体が (ロードされたアセンブリによって何らかの方法で) 参照されていない場合は、インスタンス化できません。厳密に型指定された方法でインスタンスを参照する必要がない (または参照したくない) 場合でも、オブジェクト自体はその型のインスタンスである必要があります。
アセンブリが利用可能 (かつ検出可能) である場合は読み込まれますが、厳密にはnoであり、完全に参照されていないアセンブリから型を逆シリアル化することはできません。
シリアル化された情報を一時的に取得してグループ化できるようにするだけの場合は、シリアル化されたストリームから生のバイトを読み取ってグループ化できますか? 多分List<byte[]>
インスタンスに?これは、最終的な宛先が、各バイト配列によって表される情報についていくつかの仮定を行うことができることを前提としています。
はい、シリアル化バインダーを作成すると、型を別の型に逆シリアル化できます。ただし、定義がなければ元の型のインスタンスをインスタンス化することはできません (アセンブリを手元に用意する必要があります)。
オブジェクトを逆シリアル化するには、オブジェクトが定義されているアセンブリを参照する必要があります。