2010-01-24 20 views
1

我有麻烦找上WorkflowServiceHost中的新版本的任何有价值的文档附带.NET 4/VS 2010 Beta 2中WorkflowServiceHost中在Windows工作流 - .NET版本4

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

我希望能够通过传递一样允许在.NET 3.X版本以前的构造类型来加载我的工作流...

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

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

是否有任何其他方式可以托管已在运行时加载的工作流程?

感谢提前您的帮助:)

回答

1

在WF4你通过实际的工作流定义为活动树,而不是因为你之前做了一个类型。如果你有创建对象的类型,应该使用类似Activator.CreateInstance()的简单方法。使用活动树而不是类型有一些好处,因为您可以使用ActivityXamlServices.Load()来快速创建对象来读取XAML文件。

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

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

+0

感谢您的回复Maurice - 我似乎对Activator.CreateInstance()路由没有任何好运 - 当我尝试将其传递到WorkflowServiceHost(对象serviceObject,params Uri [] baseAddresses )像这样'WorkflowServiceHost要求所提供的serviceObject是一个Activity或一个WorkflowService。 参数名称:serviceObject'。 我不能沿着ActivityXamlServices.Load()路线走,因为我的工作流服务是作为dll二进制文件提供的,而不是xaml/xmalx。 有没有其他想法? 非常感谢再次 – Lygpt 2010-01-25 17:22:30

+0

该类型指向一个活动权?如果在将它传递给WorkflowServiceHost构造函数之前将其转换为Activity。现在,您正在使用错误的重载,因为Activator.CreateInstance()将其返回为Object类型。 – Maurice 2010-01-25 20:30:27

+0

非常感谢Maurice - 我不得不做一些小动作,但(Activity)Activator.CreateInstance(Type.GetType(“Namespace.ClassName,Assembly”))。 再次感谢 – Lygpt 2010-01-26 09:20:41