在工作流中使用POCO类型
本文关键字:POCO 类型 工作流 | 更新日期: 2023-09-27 18:25:36
我正在使用WF4,需要在工作流中使用我以前创建的类型,但我不确定我的策略。
我有一门课:
class MyClass
{
public MyClass()
{
//Constructor Logic
}
public void Connect()
{
//Connect to a TCP/Device for example
}
public void Disconnect()
{
//Disconnect from a TCP/Device for example
}
}
我想在WF4流程图或StateMachine中使用它。
然后我有了我的主要应用程序:
class Program
{
private MyClass myObject;
WorkflowApplication WorkflowApplicationHoster;
static void Main(string[] args)
{
myObject = new MyClass;
IDictionary<string,object> input = new Dictionary<string,object>() {{"MyClassInstance",myObject} };
WorkflowApplicationHoster = new WorkflowApplication(new MyWorkflow,input);
WorkflowApplicationHoster.Run();
}
}
在我的工作流中,我有"InArgument"->"MyClassInstance",这是一个MyClass类型,我将其用于整个工作流。
这感觉不对。如何在WF4中使用自己的classe?
好吧——如果我能正确理解这一点,那么你想要理解的是如何将你类型的新实例放入工作流中,以便使用它。一般来说,我总是能够简单地声明一个变量并以某种方式初始化它,但问题变成了你需要什么样的初始化?
如果您只需要创建它的一个新实例,如上图所示,那么声明一个您类型的变量,并在默认值中发出new{TypeName}()来创建一个新的实例。
然而,如果这没有帮助,你将需要提供更多的信息。
您希望在全局范围内使用MyClass实例;就是我读这篇文章的方式。
一种流行的方法是将其创建为Singleton
。一般来说,这意味着您有一个私有/受保护的构造函数和一个公共Instance
方法,可以确保只创建一个实例。
另一种方法是使类及其所有方法成为static
。
StackOverflow中有多个关于这些方法主题的线程。此外,真正的争论似乎是是否要在全局范围内进行,而不一定是如何实现。