我已经使用 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 中,验证器似乎没有捕捉到错误的表达式。验证工作流程的正确方法是什么?
谢谢,埃里克