MarshalByRefObject.MemberwiseClone(Boolean) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vytvoří kopii aktuálního objektu bez MarshalByRefObject podmět.
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
k odstranění identity aktuálního objektu, což způsobí přiřazení nové identity objektu při zařazování přes hranice MarshalByRefObject vzdálené komunikace. Obvykle je false
vhodná hodnota . true
ke zkopírování identity aktuálního objektu do jeho klonu, což způsobí směrování volání klienta vzdálené komunikace na objekt MarshalByRefObject vzdáleného serveru.
Návraty
Mělká kopie aktuálního MarshalByRefObject objektu.
Poznámky
Metoda vytvoří kopii bez podmět vytvořením nového objektu a zkopírováním nestatických polí aktuálního objektu MemberwiseClone(Boolean) MarshalByRefObject do nového MarshalByRefObject objektu. Pokud je pole hodnotový typ, provede se bitová kopie pole. Pokud je pole odkazový typ, zkopíruje se odkaz, ale odkazovaný objekt nikoli. Původní objekt a jeho klon proto odkazují na stejný objekt.
Představte si například objekt s názvem X, který odkazuje na objekty A a B. Objekt B pak MarshalByRefObject odkazuje na objekt C. Podoká kopie X vytvoří nový objekt X2, který také odkazuje na objekty A a B. Naopak hluboká kopie X vytvoří nový objekt X2, který odkazuje na nové objekty A2 a B2, což jsou kopie A a B. B2 pak odkazuje na nový objekt C2, což je kopie C. K provedení hloubkové nebo mělké kopie objektu použijte třídu, která implementuje ICloneable rozhraní.
Identita objektu je definována jako objekt vzdáleného serveru, který je cílem volání MarshalByRefObject klienta vzdálené komunikace. Ve výchozím nastavení má členská klon objektu stejnou identitu jako původní objekt, což obvykle není správné chování pro klony objektů na straně serveru, které jsou zařazovány napříč hranicí vzdálené komunikace na MarshalByRefObject straně klienta. Zadejte , což je obvykle vhodné, pokud chcete odstranit identitu klonu a způsobit přiřazení nové identity při zařazování klonu přes hranice vzdálené komunikace nebo způsobit, že klon zachová identitu původního false
true
MarshalByRefObject objektu. Tuto MemberwiseClone(Boolean) metodu mají používat vývojáři implementující objekty vzdáleného serveru.