【问题标题】:WorkflowServiceHost in Windows Workflow - .NET 4 versionWindows Workflow 中的 WorkflowServiceHost - .NET 4 版本
【发布时间】:2010-01-24 23:10:52
【问题描述】:

我在 .NET 4 / VS 2010 Beta 2 附带的新版 WorkflowServiceHost 上找不到任何有价值的文档。

WorkflowServiceHost 的新版本现在位于 System.ServiceModel.Activities 中,并且与位于 System.ServiceModel 中的旧 .NET 3.x 版本具有不同的构造器。

我希望能够通过在允许的 .NET 3.x 版本中传入类似于此先前构造函数的类型来加载我的工作流...

public WorkflowServiceHost(Type workflowType, params Uri[] baseAddress)

我的问题是我没有任何其他构造函数在编译时需要的信息(我计划通过 Type.GetType(string) 推断我的工作流的类型,因为我只能访问实际的运行时的工作流活动)。

还有其他方法可以托管在运行时加载的工作流吗?

提前感谢您的所有帮助:)

【问题讨论】:

    标签: .net workflow-foundation workflow-foundation-4


    【解决方案1】:

    在 WF4 中,您将实际工作流定义作为活动树传递,而不是像以前那样传递类型。如果你有创建对象的类型,使用 Activator.CreateInstance() 之类的东西应该很简单。使用活动树而不是类型有一些好处,因为您可以使用 ActivityXamlServices.Load() 动态创建对象来读取 XAML 文件。

    如果您愿意,WorkflowServiceHost 的 WCF 部分可以完全在配置文件中完成。无需在构造函数中传入 baseAddress。

    WorkflowServiceHost 的替代方法是使用 WorkflowApplication。不过,这仍然需要您将活动树添加到构造函数中。

    【讨论】:

    • 感谢您的回复 Maurice - 我似乎对 Activator.CreateInstance() 路由也没有任何运气 - 当我尝试将其传递给 WorkflowServiceHost(object serviceObject, params Uri[] baseAddresses) 像这样 'WorkflowServiceHost 要求提供的 serviceObject 是 Activity 或 WorkflowService。参数名称:serviceObject'。我也不能使用 ActivityXamlServices.Load() 路线,因为我的工作流服务是作为 dll 二进制文件而不是 xaml/xmalx 提供的。还有其他想法吗?再次感谢您
    • 类型指向一个Activity对吧?如果是这样,在将其传递给 WorkflowServiceHost 构造函数之前将其转换为 Activity。现在您使用了错误的重载,因为 Activator.CreateInstance() 将其作为 Object 类型返回。
    • 这很好,谢谢莫里斯-我不得不做一些摆弄,但是(活动)Activator.CreateInstance(Type.GetType(“Namespace.ClassName,Assembly”))。再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多