Nachrichtenverweise in der Form „Nachrichtenzuweisung“
Wenn Sie einer Nachricht oder einem Nachrichtenteil das erste Mal ein .NET-basiertes Objekt zuweisen, wird von dieser Nachricht ein Verweis auf das Objekt gespeichert und verwaltet.
Aus Gründen der Effizienz und Skalierbarkeit führt die Orchestrierungs-Engine keine "deep copy" des -Objekts durch: Das heißt, es kopiert nicht den gesamten Inhalt des Objekts in die Nachricht.
Wenn Sie das Objekt später einer anderen Nachricht oder einem anderen Nachrichtenteil zuweisen, führen jegliche Änderungen am Original zu Änderungen an der zweiten Nachricht oder dem zweiten Nachrichtenteil. Sie sollten dieses Vorgehen vermeiden, da dies zu unvorhergesehenen Ergebnissen führen kann.
Wenn für die zweite Nachricht eine gesonderte Kopie des Objekts erforderlich ist, sollten Sie die erste Nachricht bzw. den ersten Nachrichtenteil der zweiten Nachricht bzw. dem zweiten Nachrichtenteil zuweisen.
Betrachten Sie das folgende Beispiel:
Falsches Vorgehen:
myMsg1 = myObj; // assign the first message
myMsg2 = myObj; // assign the second message (wrong!)
myMsg2.myInt = 100; // modify the second
myMsg1.myInt = 5;
In diesem Fall wird myMsg2.myInt überschrieben und hat nun den Wert 5.
Richtiges Vorgehen:
myMsg1 = myObj; // assign the first message
myMsg2 = myMsg1; // assign the second message (right!)
myMsg2.myInt = 100; // modify the second
myMsg1.myInt = 5;
In diesem Fall hat myMsg2.myInt erwartungsgemäß den Wert 100.