2

我已经使用 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);
    }

执行上述操作后,我能够告知工作流服务评估 Visual Basic 表达式所需的类型。

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

此外,我能够通过执行以下操作来验证工作流程:

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

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

谢谢,埃里克

4

0 回答 0