ActionExecutor это контекстно-зависимая технология, которая позволяет выполнять несколько различных операций с использованием одного Action. При этом фактическая функциональность определяется типом объекта, который используется в качестве контекста. Action может быть выполнено самим пользователем, из UI, или системой.

Давайте рассмотрим следующий пример:

Есть два персистентных типа: FirstObjectType или SecondObjectType. Оба типа имеют следующие свойства: FirstValue, SecondValue, и ThirdValue. Имеется также одно Simple Action «Execute». После выполнения этого Simple Action в контексте объекта типа FirstObjectType, значение поля FirstObjectType буде равно FirstValue+SecondValue. После выполнения этого Simple Action в контексте объекта типа SecondObjectType, значение поля FirstObjectType буде равно FirstValue-SecondValue.

Как вы можете видеть на скриншотах приложений, одно Simple Action обеспечивает две различные функциональности:

В качестве контекста могут использоваться объекты, которые реализуют интерфейс IActionExecutorProvider. В IActionExecutorProvider объявлен метод CreateActionExecutor(), который возвращает объект, реализующий интерфейс IActionExecutor:

public static IActionExecutor CreateActionExecutor(SomeObjectType instance)

Некоторые члены интерфейса IActionExecutor перечислены ниже:

•        event EventHandler Finalized;

происходит при завершении выполнения метода Execute() (или DoExecute()).

•        void OnFinalized(EventArgs e);

вызывает событие Finalized.

•        void Execute(SimpleAction sender, SimpleActionExecuteEventArgs e);

начинает выполнение Simple Action по нажатии пользователем кнопки.

•        void DoExecute();

начинает выполнение Simple Action системой.

Simple Action для контекстно-зависимого выполнения добавляется в специальный View Controller, который является наследником ActionExecutorViewController.

To learn more about the ActionExecutor, refer to the following documents:

Чтобы узнать больше об ActionExecutor, обратитесь к следующим документам:

Code reference