Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous attribuez un objet basé sur .NET à un message ou à une partie de message, ce message contient et conserve une référence à l’objet.
Pour une efficacité et une scalabilité, le moteur d’orchestration n’effectue pas de « copie approfondie » de l’objet : autrement dit, il ne copie pas tout le contenu de l’objet dans le message.
Si vous attribuez par la suite l’objet à un autre message ou partie de message, toutes les modifications apportées à l’origine entraînent des modifications apportées au deuxième message ou à la partie de message. Vous devez éviter cette pratique, car les résultats sont imprévisibles.
Si vous avez besoin que votre deuxième message ait une copie distincte de l’objet, vous devez affecter le premier message ou la partie du message à la deuxième partie du message ou du message.
Prenons l’exemple suivant :
Mauvaise façon :
myMsg1 = myObj; // assign the first message
myMsg2 = myObj; // assign the second message (wrong!)
myMsg2.myInt = 100; // modify the second
myMsg1.myInt = 5;
Dans ce cas, myMsg2.myInt a été remplacé et a maintenant la valeur 5.
La 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;
Dans ce cas, myMsg2.myInt a toujours la valeur 100, comme prévu.