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


Свойства и аргументы

Существует несколько способов передачи данных действию. Кроме использования InArgument, можно также разработать действия, получающие данные либо через стандартные свойства CLR, либо через открытые свойства ActivityAction. В этом разделе описано, как выбрать подходящий метод.

Использование свойств CLR

Передача данных действию через свойства CLR (открытые методы, использующие для доступа к данным подпрограммы get и set) имеет наибольшее количество ограничений. Значение параметра, передаваемого свойству CLR, должно быть известно при компиляции решения; это значение будет одинаковым для каждого экземпляра рабочего процесса. Таким образом, значение, передаваемое свойству CLR, аналогично константе, определенной в коде. Это значение не может изменяться в течение жизненного цикла действия и не может быть изменено для разных экземпляров действия. MethodName - пример свойства среды CLR, предоставляемого действием. Имя метода, который вызывает действие, нельзя изменить на основании условий времени выполнения, оно будет одинаковым для всех экземпляров действия.

Использование аргументов

Аргументы следует использовать, когда данные вычисляются только один раз в течение жизненного цикла действия. Это означает, что значение не изменится в течение жизненного цикла действия, но оно может быть разным для различных экземпляров действия. Condition - пример значения, вычисляемого один раз. Поэтому оно определено как аргумент. Text - другой пример метода, который должен быть определен как аргумент, поскольку он вычисляется только один раз во время выполнения действия, но может отличаться для различных экземпляров действия.

Использование ActivityAction

Если данные должны обрабатываться несколько раз за время выполнения действия, следует использовать ActivityAction. Например, свойство Condition вычисляется в каждой из итераций цикла While. Если для этой цели используется InArgument, то цикл никогда не завершится, так как аргумент не будет вычисляться в каждой итерации и будет возвращаться один и тот же результат.