Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Cuando asignas por primera vez un objeto basado en .NET a un mensaje o parte de mensaje, ese mensaje mantiene una referencia al objeto.
Para mejorar la eficiencia y la escalabilidad, el motor de orquestación no realiza una "copia profunda" del objeto: es decir, no copia todo el contenido del objeto en el mensaje.
Si posteriormente asigna el objeto a otro mensaje o parte de mensaje, cualquier modificación en el original da como resultado modificaciones en el segundo mensaje o parte del mensaje. Debe evitar esta práctica, ya que los resultados son impredecibles.
Si necesita que el segundo mensaje o parte de mensaje tenga una copia distinta del objeto, debe asignar el primer mensaje o parte de mensaje al segundo mensaje o parte de mensaje.
Considere el ejemplo siguiente:
Camino incorrecto
myMsg1 = myObj; // assign the first message
myMsg2 = myObj; // assign the second message (wrong!)
myMsg2.myInt = 100; // modify the second
myMsg1.myInt = 5;
En este caso, myMsg2.myInt se ha sobrescrito y ahora tiene el valor 5.
Manera correcta:
myMsg1 = myObj; // assign the first message
myMsg2 = myMsg1; // assign the second message (right!)
myMsg2.myInt = 100; // modify the second
myMsg1.myInt = 5;
En este caso, myMsg2.myInt todavía tiene el valor 100, según lo previsto.