public void BeginSelectAction() { ActionInstanceSide actionInstanceSide; if (AlgorithmContext is SingleActionScenario) { actionInstanceSide = ActionInstanceSide.Both; } else if (MasterAction == null) { actionInstanceSide = ActionInstanceSide.OnlyLeft; } else { actionInstanceSide = ActionInstanceSide.OnlyRight; } SelectActionView.Show( (type) => { var newAction = Singleton.Resolve <PluginsManager>().CreateInstance(type, AlgorithmContext); if (newAction != null) { ActionControlResolver.UserInitialize( (result) => { if (result) { ActionHolder.Action = newAction; Model.Refresh(ActionHolder); Modified?.Invoke(this); if (MasterAction != null && !MasterAction.ValueType.IsCompatibleWith(newAction.ValueType)) { MessageView.ShowMessage( "Тип действия не совпадает с типом действия главного действия. Нужно настроить подчиненное действие еще раз.", "Внимание!", Icons.Icon.WarningCircle); } } }, newAction, MasterAction?.ValueType, true, MasterAction); } }, MasterAction?.ValueType.GetType(), actionInstanceSide, ActionHolder?.Action.GetType()); }
public void BeginSelectAction() { SelectActionView.Show( (type) => { try { var newAction = Singleton.Resolve <PluginsManager>().CreateInstance(type, AlgorithmContext); if (newAction != null) { ActionControlResolver.UserInitialize( (result) => { if (result) { ActionHolder.Action = newAction; Model.Refresh(ActionHolder); Modified?.Invoke(this); } }, newAction, MasterAction?.ValueType, true, MasterAction); if (MasterAction != null && MasterAction.ValueType.GetType() != newAction.ValueType.GetType()) { MessageView.ShowMessage( "Тип действия не совпадает с типом действия главного действия. Нужно настроить подчиненное действие еще раз.", "Внимание!", Icons.Icon.WarningCircle, null, () => { BeginSelectAction(); }); } } } catch (Exception e) { Log.Error("Ошибка во время настройки действия", e); } }, MasterAction?.ValueType.GetType(), ActionInstanceSide.OnlyRight, ActionHolder?.Action.GetType()); }