2012-09-25 8 views
0

흐름도에서 반복 횟수를 계산해야하지만 사용자 정의 활동에서 변수를 읽고 선호하는 변수에 쓸 수 있어야합니다.액세스 변수 <int> WF4의 맞춤 활동

현재 내 플로우 차트는 전체 Flowchart의 범위 (기본값은 0)와 Assign 활동을 사용하여 증가하는 디자인보기에서 var를 선언합니다. 하지만 난 그것을 재설정하지 않고 사용자 정의 활동에서 변수에 액세스 할 수있는 방법을 알아낼 수 없습니다. 하지만 선언 할 때

Declare Variable<T> variable in a CodeActivity in windows workflow 4.0 만 내가 VAR의 기본값을 사용하지 않는 : var에 액세스 할 수

내 시도는 여기이 질문에 대해 설명 뭐죠 같은 것입니다. 아직도 var은 디자인보기에서 정의한 var과 관련이 없습니다. 나는 또한 코드에서만 정의하려고 시도했지만 예를 들어 정기적 인 Assign 활동에서 액세스 할 수 없다.

그래서 "global"변수로 var를 사용할 수 있으려면 어떻게해야합니까?

감사합니다.

답변

2

가장 직관적이고 올바른 방법은 흐름도 수준에서 선언하는 변수를 사용자 지정 작업 내로 전달하는 것입니다. 그런 다음 가치로 원하는 모든 것을 할 수 있으며 반환 할 수 있습니다.

사용자 정의 증분 활동의 예 (이것은 할당 활동이 너무 어떻게 작동) :

var countVar = new Variable<int>("count"); 

var activity = new Sequence 
{ 
    Variables = 
    { 
     // declare counter variable at global scope 
     countVar 
    }, 
    Activities = 
    { 
     new WriteLine { Text = new VisualBasicValue<string>(@"""Count: "" & count") }, 
     new IncrementActivity { CountVariable = countVar, Result = countVar }, 
     new WriteLine { Text = new VisualBasicValue<string>(@"""Count: "" & count") }, 
     new IncrementActivity { CountVariable = countVar, Result = countVar }, 
     new WriteLine { Text = new VisualBasicValue<string>(@"""Count: "" & count") }, 
     new IncrementActivity { CountVariable = countVar, Result = countVar } 
    } 
}; 
다음은

public class IncrementActivity : CodeActivity<int> 
{ 
    [RequiredArgument] 
    public InArgument<int> CountVariable { get; set; } 

    protected override int Execute(CodeActivityContext context) 
    { 
     // Do whatever logic you want here 

     return CountVariable.Get(context) + 1; 
    } 
} 

이 (순서도를 사용하여 동일한) 시퀀스를 사용하여 사용의 샘플입니다

출력 :

Count: 0 
Count: 1 
Count: 2 

참고 VI를 통해 간단합니다 당신이 직접 인쇄 문자열을 구축 VisualBasicValue<string>을 사용하지 않아도 디자이너를 sual. 그 외에는 정확히 동일합니다!

+0

감사합니다. 저는 xaml에 정의되어 있기 때문에 변수에 액세스 할 수 있다는 느낌이 들었습니다. 문제는 이미 Execute 메서드에서 var를 반환했기 때문에 첫 번째 예제처럼 작동하도록 InOutArgument를 추가했습니다. – Lyck