我是Windows工作流程的新手,并试图让我的头部变量,以下代码给我一个错误 -
public sealed class CodeActivity1 : CodeActivity
{
Variable<int> wfVar = new Variable<int>("wfVar", 0);
protected override void Execute(CodeActivityContext context)
{
wfVar.Set(context, 1);
}
}
无法使用'System.Int32'类型的变量'wfVar'。请确保在Activity或SymbolResolver中声明它。
考虑到我在一个Activity中声明了变量,错误意味着什么。
谢谢, ILIAS
答案 0 :(得分:2)
工作流运行时需要知道您的变量。默认情况下,它使用公共属性的反射。所以让你的变量公开就可以了。另一种选择是使用CacheMetadata()
函数并在那里注册变量。
答案 1 :(得分:2)
如果您尝试使用 Variable 作为CodeActivity实现变量,那么您认为它是错误的。 CodeActivity主要用于执行某些代码(当然在Execute()方法中),快速并退出。
只有使用 NativeActivity 才能实现您想要做的事情。这样,执行引擎就知道存在一个可以在整个活动执行中使用(获取或设置)的变量。
public sealed class CustomActivity : NativeActivity
{
Variable<int> wfVar = new Variable<int>("wfVar", 0);
protected override void CacheMetadata(NativeActivityMetadata metadata)
{
base.CacheMetadata(metadata);
metadata.AddImplementationVariable(wfVar);
}
protected override void Execute(CodeActivityContext context)
{
wfVar.Set(context, 1);
}
}