尝试使用包含CSharpValue表达式的4.5以编程方式创建Windows工作流服务的问题

时间:2013-01-10 03:22:27

标签: workflow-foundation

我已使用Windows Workflow 4.0以编程方式成功创建了Windows工作流服务。 Windows Workflow 4.0不支持CSharp表达式,因此我需要使用VisualBasic表达式。现在我们已经升级到4.5,我想将它们转换为VisualBasic表达式到CSharp表达式。不幸的是,当我尝试使用工作流程时,我遇到了一些错误。

在4.0中,为了正确生成和序列化工作流,我需要告知它使用哪些命名空间。例如,我有以下内容:

    private static void AddVbNamespaceSettings(WorkflowService service, params Type[] types)
    {
        var vbsettings = VisualBasic.GetSettings(rootObject) ?? new VisualBasicSettings();

        foreach (Type t in types)
        {
            vbsettings.ImportReferences.Add(
                new VisualBasicImportReference
                {
                    Assembly = t.Assembly.GetName().Name, 
                    Import = t.Namespace
                });
        }

        VisualBasic.SetSettings(service, vbsettings);
    }

执行上述操作后,我能够通知工作流服务评估可视化基本表达式所需的类型。

我相信我需要为CSharp做一些相同的事情,但我无法发现它是什么。有没有相同的东西?

此外,我还可以通过以下方式验证工作流程:

        ValidationResults results = ActivityValidationServices.Validate(service.Body); 
        if (results.Errors.Count > 0)
        {
            throw new Exception();
        }

现在我的表达式在CSharpValues中,验证器似乎没有捕获错误的表达式。验证工作流程的正确方法是什么?

谢谢, 埃里克

0 个答案:

没有答案