Как я могу в Workflow Foundation 4.0 прочитать значение InArgument вне метода Execute в Activity, в которой оно было объявлено? - PullRequest
0 голосов
/ 13 октября 2011

Как мне получить доступ или прочитать значение InArgument вне метода Execute действия, в котором оно было объявлено?

Я попытался вызвать метод get, передав NativeActivityContext, но это просто привело к получению сообщения «объявить аргумент в действии».

Type t = typeof(System.Activities.InArgument<>).MakeGenericType(typeof(Test.Entities.Agent));
object obj = Activator.CreateInstance(t);

MethodInfo dd = t.GetMethod("Get");
object magic = dd.Invoke(obj, new object[] { (System.Activities.ActivityContext)context });

1 Ответ

1 голос
/ 13 октября 2011

Не уверен, откуда взялся ваш контекст, но похоже, что он не был предоставлен средой выполнения рабочего процесса. Среда выполнения рабочего процесса управляет всеми аргументами и переменными для вас и позволяет получать данные через NativeActivityContext. Это не те типы, которые вы можете просто использовать где-то еще, они зависят от внутренних структур, предоставляемых средой выполнения. Если вы пытаетесь выполнить модульное тестирование действия, вы должны использовать WorkflowInvoker для выполнения вашего действия. Используйте расширения действия для разделения действия, намерения и фактической реализации, расширения.

...