在Windows工作流4.0中的CodeActivity中声明Variable <t>变量</t>

时间:2011-10-14 12:16:57

标签: workflow-foundation-4

我是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

2 个答案:

答案 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);
    }
}