Конструктор действия 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 отображается в следующем списке:
Зарегистрируйте аргумент TargetObject.
Зарегистрируйте аргумент Result.
Переходите от одного пункта коллекции Parameters к другому и зарегистрируйте каждый аргумент.
Результирующее исключение типа InvalidWorkflowException со следующим сообщением: «InvokeMethod»: переменная, аргумент RuntimeArgument или DelegateArgument уже существует с именем «TargetObject». Имена должны быть уникальными в среде.
Это ограничение не применяется к TargetType и RunAsynchronously. Они не являются аргументами рабочего процесса и поэтому не регистрируются в GenericTypeArguments коллекции InvokeMethod действий в методе CacheMetadata .