MarshalByRefObject.MemberwiseClone(Boolean) Metodo

Definizione

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

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

Parametri

cloneIdentity
Boolean

false per eliminare l'identità dell'oggetto MarshalByRefObject corrente, che provoca l'assegnazione di una nuova identità all'oggetto se sottoposto a marshaling oltre un limite remoto. Il valore false in genere è appropriato. true per eseguire la copia dell'identità dell'oggetto MarshalByRefObject nel rispettivo duplicato, che provoca l'indirizzamento al server dell'oggetto remoto delle chiamate provenienti dal client remoto.

Restituisce

MarshalByRefObject

Copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

Commenti

Il metodo crea una copia superficiale creando un nuovo oggetto e quindi copiando i campi non statici dell'oggetto MemberwiseClone(Boolean) corrente nel nuovo oggetto MarshalByRefObject MarshalByRefObject . Se un campo è un tipo valore, viene eseguita una copia bit per bit del campo. Se un campo è un tipo riferimento, il riferimento viene copiato ma l'oggetto a cui si fa riferimento non lo è. Pertanto, l'oggetto originale e il relativo clone fanno riferimento allo stesso oggetto.

Si consideri ad esempio un oggetto denominato X che fa riferimento agli oggetti A e B. L'oggetto B, a sua MarshalByRefObject volta, fa riferimento all'oggetto C. Una copia superficiale di X crea un nuovo oggetto X2 che fa riferimento anche agli oggetti A e B. Al contrario, una copia completa di X crea un nuovo oggetto X2 che fa riferimento ai nuovi oggetti A2 e B2, che sono copie di A e B. B2, a sua volta, fa riferimento al nuovo oggetto C2, che è una copia C. Usare una classe che implementa l'interfaccia per eseguire una copia profonda o superficiale di ICloneable un oggetto.

L'identità di MarshalByRefObject un oggetto è definita come oggetto server remoto che è la destinazione di una chiamata client remota. Per impostazione predefinita, il clone membro per membro di un oggetto ha la stessa identità dell'oggetto originale, che in genere non è il comportamento corretto per i cloni di oggetti lato server di cui viene effettuato il marshalling attraverso un limite remoto sul lato MarshalByRefObject client. Specificare , che è in genere appropriato, per eliminare l'identità del clone e assegnare una nuova identità quando viene effettuato il marshalling del clone attraverso un limite remoto o per fare in modo che il clone manteni l'identità dell'oggetto false true MarshalByRefObject originale. Il MemberwiseClone(Boolean) metodo deve essere utilizzato dagli sviluppatori che implementano oggetti server remoti.

Si applica a