가장 직관적이고 올바른 방법은 흐름도 수준에서 선언하는 변수를 사용자 지정 작업 내로 전달하는 것입니다. 그런 다음 가치로 원하는 모든 것을 할 수 있으며 반환 할 수 있습니다.
사용자 정의 증분 활동의 예 (이것은 할당 활동이 너무 어떻게 작동) :
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. 그 외에는 정확히 동일합니다!
감사합니다. 저는 xaml에 정의되어 있기 때문에 변수에 액세스 할 수 있다는 느낌이 들었습니다. 문제는 이미 Execute 메서드에서 var를 반환했기 때문에 첫 번째 예제처럼 작동하도록 InOutArgument를 추가했습니다. – Lyck