我正在使用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” - &gt; “MyClassInstance”是一个MyClass类型,我将它用于整个工作流程。
这感觉不正确。如何使用WF4自己的classe?
答案 0 :(得分:0)
好的 - 所以,如果我正确地理解了您正在尝试理解的内容,那么如何将您的类型的新实例添加到工作流程中以便可以使用它。一般来说,我总是能够简单地声明一个变量并以某种方式初始化它,但问题是你需要什么样的初始化?
如果您只需要创建一个新实例,如上所示,则声明一个类型的变量,并在Default Value中发出New {TypeName}()以创建一个新实例。
但是,如果这没有帮助,您将需要提供更多信息。
答案 1 :(得分:0)
您希望在全局范围内使用该MyClass实例;我是怎么看的。
一种流行的方法是将其创建为Singleton
。通常,这意味着您有一个私有/受保护的构造函数和一个公共Instance
方法,可以确保只创建一个且只有一个实例。
另一种方法是创建类,以及它的所有方法static
。
StackOverflow中有多个关于这些方法主题的线程。此外,真正的争论似乎是to have something in global scope or not,不一定是如何实施。