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


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

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

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

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

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

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

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

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