Поделиться через


Конструктор действия InvokeMethod

Конструктор InvokeMethod используется для создания и настройки InvokeMethod действия.

Действие InvokeMethod

InvokeMethod Вызывает открытый метод заданного объекта или типа.

Использование конструктора действий InvokeMethod

Доступ к конструктору действий InvokeMethod в категории "Примитивы" панели элементов. Конструктор действий InvokeMethod можно перетаскивать из панели элементов и перемещаться на поверхность конструктора рабочих процессов, где обычно размещаются действия, например внутри Sequence. Удаление конструктора действий создает InvokeMethod действие по умолчанию DisplayName InvokeMethod. Его DisplayName можно изменить в заголовке конструктора действий InvokeMethod или в поле DisplayName сетки свойств.

Свойства InvokeMethod

В следующей таблице показаны InvokeMethod свойства и описано, как они используются в конструкторе. Эти свойства можно изменить в сетке свойств, и некоторые из них можно изменить на поверхности конструктора рабочих процессов.

Имя свойства Обязательное поле Использование
DisplayName False Понятное имя действия InvokeMethod. Значение по умолчанию - InvokeMethod.

DisplayName Хотя это не строго обязательно, лучше всего использовать его.
MethodName Истина Имя метода, вызываемого, когда выполняется действие. Вызываемая метод должна быть объявлена как общедоступная. Это свойство можно изменить на поверхности конструктора и является обязательным.
Parameters False Коллекция параметров вызванного метода. Параметры должны добавляться в коллекцию в том же порядке, в котором они представлены в сигнатуре метода. Чтобы отобразить диалоговое окно "Параметры", где можно задать это свойство, нажмите кнопку с многоточием в поле "Параметры" сетки свойств. Нажмите кнопку "Создать аргумент", чтобы добавить параметры.
Result False Возвращаемое значение вызова метода.
RunAsynchronously Истина Указывает, вызывается ли метод асинхронно. Значение по умолчанию равно False.
TargetObject False Объект, в котором содержится метод для вызова. Это свойство можно изменить в области конструктора.

Необходимо указать либо TargetObject, либо TargetType.
TargetType False Тип параметра TargetObject. Это свойство можно изменить в области конструктора. Это свойство необходимо устанавливать, только если вызванный метод является статическим.

Для передачи параметров в качестве параметра C# (например, Method1(out myParam))используйте OutArgument вместо InOutArgument

Методы с аргументами с именем TargetObject или Result не могут вызываться с помощью InvokeMethod действия. Это происходит потому, что действие InvokeMethod регистрирует GenericTypeArguments, TargetObject и Result в CacheMetadata.

Алгоритм регистрирования параметров в CacheMetadata отображается в следующем списке:

  1. Зарегистрируйте аргумент TargetObject.

  2. Зарегистрируйте аргумент Result.

  3. Переходите от одного пункта коллекции Parameters к другому и зарегистрируйте каждый аргумент.

Результирующее исключение типа InvalidWorkflowException со следующим сообщением: «InvokeMethod»: переменная, аргумент RuntimeArgument или DelegateArgument уже существует с именем «TargetObject». Имена должны быть уникальными в среде.

Это ограничение не применяется к TargetType и RunAsynchronously. Они не являются аргументами рабочего процесса и поэтому не регистрируются в GenericTypeArguments коллекции InvokeMethod действий в методе CacheMetadata .

См. также