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