Использование типов POCO в рабочем процессе - PullRequest
0 голосов
/ 24 февраля 2012

Я работаю с 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?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2012

Вы хотите использовать этот экземпляр MyClass в глобальной области видимости; Вот как я это читаю.

Один из популярных способов - создать его как Singleton. Обычно это означает, что у вас есть частный / защищенный конструктор и открытый метод Instance, который гарантирует, что один и только один экземпляр будет создан.

Другой способ - создать класс и, следовательно, все его методы, static.

Существует несколько потоков в StackOverflow по теме этих подходов. Кроме того, кажется, что реальный аргумент состоит в том, иметь что-то в глобальной области видимости или нет , не обязательно как , который реализован.

0 голосов
/ 24 февраля 2012

ОК - так что, если я правильно понимаю, то вы пытаетесь понять, как вставить новый экземпляр вашего типа в рабочий процесс, чтобы его можно было использовать. Вообще говоря, мне всегда удавалось просто объявить переменную и каким-то образом ее инициализировать, но возникает вопрос, какой тип инициализации вам нужен?

Если вам просто нужно создать его новый экземпляр, как показано выше, объявите переменную вашего типа и в поле Значение по умолчанию введите New {TypeName} (), чтобы создать новый экземпляр.

Однако вам потребуется предоставить гораздо больше информации, если это не поможет.

...