다음을 통해 공유


Message Assignment 셰이프에서 메시지 참조

메시지 또는 메시지 파트에 .NET 기반 개체를 처음으로 할당하면 해당 메시지에 개체에 대한 참조가 포함 및 유지 관리됩니다.

효율성과 확장성을 위해 오케스트레이션 엔진은 개체의 "딥 카피"를 수행하지 않습니다. 즉, 개체의 전체 내용을 메시지에 복사하지 않습니다.

이후에 해당 개체를 다른 메시지 또는 메시지 파트에 할당하는 경우 원본을 수정하면 두 번째 메시지 또는 메시지 파트도 수정됩니다. 그러나 결과를 예측할 수 없기 때문에 이렇게 하지 않는 것이 좋습니다.

두 번째 메시지에 개체의 고유 복사본을 포함하려는 경우 첫 번째 메시지 또는 메시지 파트를 두 번째 메시지 또는 메시지 파트에 할당해야 합니다.

다음 예제를 참조하세요.

다음은 잘못된 방법입니다.

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

이 경우 myMsg2.myInt가 덮어쓰여 5라는 값을 갖습니다.

다음은 올바른 방법입니다.

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

이 경우 myMsg2.myInt가 예상대로 여전히 100이라는 값을 갖습니다.

참고 항목

메시지 생성