MarshalByRefObject.MemberwiseClone(Boolean) メソッド

定義

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。

protected:
 MarshalByRefObject ^ MemberwiseClone(bool cloneIdentity);
protected MarshalByRefObject MemberwiseClone (bool cloneIdentity);
override this.MemberwiseClone : bool -> MarshalByRefObject
Protected Function MemberwiseClone (cloneIdentity As Boolean) As MarshalByRefObject

パラメーター

cloneIdentity
Boolean

false を指定すると、現在の MarshalByRefObject オブジェクトの ID が削除されます。これにより、このオブジェクトがリモート処理の境界を越えてマーシャリングされるときに、新しい ID が割り当てられることになります。 通常は、値 false が適しています。 true を指定した場合は、現在の MarshalByRefObject オブジェクトの ID がその複製にコピーされます。これにより、リモート処理クライアントの呼び出しは、リモート サーバー オブジェクトにルーティングされることになります。

戻り値

MarshalByRefObject

現在の MarshalByRefObject オブジェクトの簡易コピー。

注釈

メソッドはMemberwiseClone(Boolean)、新しいオブジェクトを作成し、現在MarshalByRefObjectのオブジェクトの非静的フィールドを新しいMarshalByRefObjectオブジェクトにコピーすることで、簡易コピーを作成します。 フィールドが値型の場合、フィールドのビット単位のコピーが実行されます。 フィールドが参照型の場合、参照はコピーされますが、参照オブジェクトはコピーされません。したがって、元のオブジェクトとその複製は同じオブジェクトを参照します。

たとえば、オブジェクト A と B を MarshalByRefObject 参照する X というオブジェクトを考えてみましょう。オブジェクト B は、オブジェクト C を参照します。X の簡易コピーでは、オブジェクト A と B も参照する新しいオブジェクト X2 が作成されます。これに対し、X のディープ コピーでは、A と B2 のコピーである新しいオブジェクト A2 と B2 を参照する新しいオブジェクト X2 が作成されます。これは、コピー C である新しいオブジェクト C2 を参照します。インターフェイスを ICloneable 実装するクラスを使用して、オブジェクトの詳細コピーまたは簡易コピーを実行します。

オブジェクトの MarshalByRefObject ID は、リモート処理クライアント呼び出しのターゲットであるリモート サーバー オブジェクトとして定義されます。 既定では、オブジェクトのメンバーごとの複製は元の MarshalByRefObject オブジェクトと同じ ID を持ちます。これは通常、リモート処理境界を越えてクライアント側にマーシャリングされるサーバー側オブジェクトの複製に対する正しい動作ではありません。 通常は、複製の ID を削除し、複製がリモート処理境界を越えてマーシャリングされるときに新しい ID を割り当てるか、複製trueが元MarshalByRefObjectのオブジェクトの ID を保持するように指定falseします。 この MemberwiseClone(Boolean) メソッドは、リモート サーバー オブジェクトを実装する開発者が使用することを目的としています。

適用対象