2012-09-26 1 views
1

Boolean 유형의 resultInteger 유형의 myInt의 두 변수를 포함하는 간단한 워크 플로를 만들 수 있습니다. 이제 "Assign"액티비티를 추가하고 result을 결과 상자에 넣고 Integer.TryParse("22", myInt)을 오른쪽 표현식에 놓습니다. 이 활동을 실행 한 후에도 변수의 값은 여전히 ​​0입니다.Windows Workflow Foundation에서 ByRef 변수를 사용합니까?

TryParse 호출 결과가 변수에 올바르게 저장되지 않는 이유는 무엇입니까? (여기에 오류가 생성되지 않음)

답변

2

WF의 작동 방식이 아닙니다. 변수는 인수로 in/out의 개념을 가지고 있지 않습니다. 암시 적 연산자를 구현하지 않으므로 원하는 결과가 저장되지 않습니다.

어느 당신은 당신의 자신의 TryParse 활동을 구현하거나이 같은 InvokeMethod을 사용할 수 있습니다 : 당신의 임시 파일이 프로젝트에가는 이제까지 당신이 OBJ/86/디버그 또는 어디에서 보면

var resultVar = new Variable<bool>("result"); 
var myIntVar = new Variable<int>("myInt"); 

var activity = new Sequence 
{ 
    Variables = 
    { 
     resultVar, 
     myIntVar 
    }, 
    Activities = 
    { 
     new InvokeMethod 
     { 
      TargetType = typeof(int), 
      MethodName = "TryParse", 
      Result = new OutArgument<bool>(resultVar), 
      Parameters = 
      { 
       new InArgument<string>("22"), 
       new OutArgument<int>(myIntVar) 
      } 
     }, 
     new WriteLine 
     { 
      Text = new VisualBasicValue<string>(@"""INT: "" & myInt") 
     } 
    } 
}; 
+0

그래,하지만 여기 어딘가에 오류가 발생하지 않는 이유는 무엇입니까? 어떤 유형의 암시 적 변환이 어딘가에서 일어나야 만합니까? – DeCaf

+1

@DeCaf : 구성한대로 작동하므로 오류가 생성되지 않습니다. 그것을 파싱하려고 시도하고, 효과를 발휘하여 참값을 반환했습니다. 전달 된 정수가 복사되고 해당 범위에서 복사가 성공적으로 변경되었지만 복사 한 값 (변수)이 절대 변경되지 않으므로이 값을 다시 전달하지 않기 때문에 –

1

, 당신은 발견 할 것이다 호기심을 만족시킬 수있는 중개자 .cs 파일 나는 이것을 시험해 보았고, private int myInt와 private bool 결과를 가진 클래스와 그 변수를 사용하는 tryparse 문을 얻는다. 따라서 출력 창에서 몇 가지 문제를 보았습니다.

관련 문제