public void SetViewForCondition(StepAffectCondition condition, IView view) { foreach (var scenarioStep in Steps.Where(scenarioStep => scenarioStep.IsStepAffected(condition))) { scenarioStep.SetViewForCondition(condition, view); } }
//private bool ViewIsScreenOrDialog( ViewBase view ) //{ // return true; // //return view.ViewType == ViewType.Dialog || view.ViewType == ViewType.Screen||view.ViewType==ViewType.ChildComponent; //} private void ProcessScenarioStep(Type key, IView view, StepCondition condition) { var step = _currentScenarioSteps[key].Current; if (step == null) { // добавлена эта проверка для вот какого кейса: // если у нас работают 2 сценария одновременно, в одном нету елдов, другой сценарий ждет евенты и когда он их получает, // евенты вынуждают проверять текущий стип у всех сценариев, в сценарии где нету елдов стип будет нуллом, отсюда нуллреф return; } var stepAffectCondition = new StepAffectCondition(condition, view == null?null: view.GetType()); if (step.IsStepAffected(stepAffectCondition)) { step.SetViewForCondition(stepAffectCondition, view); MoveNextStep(key); } }
public bool IsStepAffected(StepAffectCondition condition) { return(Steps.Any(a => a.IsStepAffected(condition))); }