私たちのタスクは非常に単純です。各オブジェクト (IDItem) が一意の ID を持つオブジェクト グラフがあります。オブジェクト グラフは、クライアントとサーバー マシンの 2 回存在します。
ここで、いくつかのシリアライズ可能なコマンドをサーバーに渡します。このコマンドには、いくつかの IDItems がフィールドとして含まれています。IDItems は ISerializable インターフェイスを実装し、それらの ID のみを SerializationInfo に格納します。お気に入り:
// The method called when serializing a IDItem.
void GetObjectData(SerializationInfo info, StreamingContext context)
{
// Instead of serializing this object, just save the ID
info.AddValue("ID", this.GetID());
}
問題は、デシリアライザーが作成するインスタンスに既存のオブジェクトをどのように割り当てることができるかということです。「this」識別子は読み取り専用であるため、ISerializable コンストラクターの次のようなものは明らかに機能しません。
//does not work
protected IDItem(SerializationInfo info, StreamingContext context)
{
this = GlobalObject.GetIDItem(info.GetString("ID"));
}
では、既存のオブジェクトをデシリアライズされたオブジェクトに割り当てる方法はありますか?
敬具、タルム