Condividi tramite


Riferimenti a messaggi nella forma Assegnazione messaggio

Quando si assegna per la prima volta un oggetto basato su .NET a un messaggio o a una parte di un messaggio, il messaggio in questione contiene e mantiene un riferimento all'oggetto.

Per efficienza e scalabilità, il motore di orchestrazione non esegue una "copia profonda" dell'oggetto, ovvero non copia l'intero contenuto dell'oggetto nel messaggio.

Se successivamente si assegna l'oggetto a un altro messaggio o a un'altra parte del messaggio, tutte le modifiche all'originale produrranno modifiche al secondo messaggio o alla parte del messaggio. È consigliabile evitare questa procedura, poiché i risultati sono imprevedibili.

Se è necessario che il secondo messaggio includa una copia distinta dell'oggetto, è consigliabile assegnare il primo messaggio, o la parte del messaggio, al secondo messaggio o alla parte del messaggio.

Si consideri l'esempio seguente:

Modo errato:

myMsg1 = myObj; // assign the first message  
myMsg2 = myObj; // assign the second message (wrong!)  
myMsg2.myInt = 100; // modify the second  
myMsg1.myInt = 5;  

In questo caso, myMsg2.myInt è stato sovrascritto e ha ora il valore 5.

Modo corretto:

myMsg1 = myObj; // assign the first message  
myMsg2 = myMsg1; // assign the second message (right!)  
myMsg2.myInt = 100; // modify the second  
myMsg1.myInt = 5;  

In questo caso, myMsg2.myInt ha ancora il valore 100, come previsto.

Vedere anche

Costruzione di messaggi