Références de message dans une forme Assignation du message
Lorsque vous assignez un objet .NET à un message ou à une partie de message pour la première fois, ce message conserve une référence de l'objet.
Par souci d’efficacité et d’extensibilité, le moteur d’orchestration n’effectue pas de « copie approfondie » de l’objet : c’est-à-dire qu’il ne copie pas l’intégralité du contenu de l’objet dans le message.
Si vous attribuez ensuite l'objet à un autre message ou à une autre partie de message, toute modification apportée à l'original entraîne la modification du second message ou partie de message. Les résultats devenant alors imprévisibles, il est recommandé d'éviter cette pratique.
Si votre second message doit disposer d'une copie distincte de l'objet, vous devez attribuer le premier message (ou partie de message) au second message (ou partie de message).
Prenons l’exemple suivant :
Mauvaise méthode :
myMsg1 = myObj; // assign the first message
myMsg2 = myObj; // assign the second message (wrong!)
myMsg2.myInt = 100; // modify the second
myMsg1.myInt = 5;
Ici, myMsg2.myInt a été modifié et affiche maintenant la valeur 5.
Bonne méthode :
myMsg1 = myObj; // assign the first message
myMsg2 = myMsg1; // assign the second message (right!)
myMsg2.myInt = 100; // modify the second
myMsg1.myInt = 5;
Ici, myMsg2.myInt affiche toujours la valeur 100, comme escompté.