Udostępnij za pośrednictwem


MarshalByRefObject.MemberwiseClone(Boolean) Metoda

Definicja

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

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

Parametry

cloneIdentity
Boolean

false w celu usunięcia tożsamości bieżącego MarshalByRefObject obiektu, co spowoduje przypisanie nowej tożsamości obiektu podczas marshalingu przez granicę komunikacji wirtualnej. Wartość jest false zwykle odpowiednia. true aby skopiować tożsamość bieżącego MarshalByRefObject obiektu do klonu, co spowoduje przekierowanie wywołań klienta komunikacji zdalnej do obiektu serwera zdalnego.

Zwraca

Płytka kopia bieżącego MarshalByRefObject obiektu.

Uwagi

Metoda MemberwiseClone(Boolean) tworzy płytkią kopię, tworząc nowy MarshalByRefObject obiekt, a następnie kopiując niestatyczne pola bieżącego MarshalByRefObject obiektu do nowego obiektu. Jeśli pole jest typem wartości, wykonywana jest bitowa kopia pola. Jeśli pole jest typem odwołania, odwołanie jest kopiowane, ale obiekt określony nie jest; dlatego oryginalny obiekt i jego klon odwołują się do tego samego obiektu.

Rozważmy MarshalByRefObject na przykład obiekt o nazwie X, który odwołuje się do obiektów A i B. Obiekt B, z kolei odwołuje się do obiektu C. Płytkia kopia X tworzy nowy obiekt X2, który również odwołuje się do obiektów A i B. Natomiast głęboka kopia X tworzy nowy obiekt X2, który odwołuje się do nowych obiektów A2 i B2, które są kopiami A i B. B2, z kolei odwołuje się do nowego obiektu C2, który jest kopią C. Użyj klasy, która implementuje ICloneable interfejs do wykonywania głębokiej lub płytkiej kopii obiektu.

Tożsamość MarshalByRefObject obiektu jest definiowana jako obiekt serwera zdalnego, który jest obiektem docelowym wywołania klienta komunikacji zdalnej. Domyślnie klon MarshalByRefObject elementu członkowskiego obiektu ma taką samą tożsamość jak oryginalny obiekt, który zazwyczaj nie jest prawidłowym zachowaniem klonów obiektów po stronie serwera, które są marshalowane przez granicę komunikacji wirtualnej po stronie klienta. Określ falsewartość , która jest zwykle odpowiednia, aby usunąć tożsamość klonu i spowodować przypisanie nowej tożsamości podczas klonowania przez granicę komunikacji wirtualnej lub true spowodować, że klon zachowa tożsamość oryginalnego MarshalByRefObject obiektu. Metoda MemberwiseClone(Boolean) ma być używana przez deweloperów implementując obiekty serwera zdalnego.

Dotyczy