C# Заключение условия if в переменной

b1zar

Client
Регистрация
29.06.2019
Сообщения
107
Благодарностей
66
Баллы
28
Всем привет. Дело в том, что в блоке if используется Contains для парсинга определенных условий из DOM, что бы выйти по красной ветке. Выглядит он так, только условий больше:

блок if:
if (DOM.Contains(Условие)|
    DOM.Contains(Условие1) & DOM.Contains(Условие2)){
    throw new Exception("Выход по ошибке");
}
и содержится в более чем 10 снипетах. Если появляется новое условие которое нужно заключить в if, мне приходиться это добавлять во всех кубиках. Когда кубиков было 2-3 это было не так сложно, но вот сейчас эта уже проблема.

Задача состоит в следующем, в начале проекта объявить переменную с условиями, а в блок if добавить эту переменную. Если появляется новое условие, то я просто его устанавливаю в 1 кубике, а не во всех.

Грубо говоря я хочу сделать так:

В 1 кубике я выставляю локальную перемененную с условиями
C#:
project.Variables["IF"].Value = DOM.Contains(Условие)|
                                DOM.Contains(Условие1) & DOM.Contains(Условие2);

//В блоках с использование условия
if (project.Variables["IF"].Value){
    throw new Exception("Выход по ошибке");
}
Но это так не работает. Есть костыль через массив и foreach. Простые условия без логического оператора & срабатывают, а с ним нет, потому что после записи в массив он не является логическим оператором.

Подскажите как такое реализовать?
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 718
Благодарностей
1 913
Баллы
113
блок if:
if (DOM.Contains(Условие)|
    DOM.Contains(Условие1) & DOM.Contains(Условие2)){
    throw new Exception("Выход по ошибке");
}
Вот примерно так или что то в этом роде.
блок if:
bool usl1 = DOM.Contains(Условие1);
bool usl2 = DOM.Contains(Условие2);
bool usl3 = DOM.Contains(Условие3);

bool usl = (usl1 || usl2 && usl3);

if (usl ){
    throw new Exception("Выход по ошибке");
}
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 697
Баллы
113
Выноси код в общий код и оформляй как функцию.
Потом просто вызывай ее в любом кубике.
 
  • Спасибо
Реакции: b1zar

b1zar

Client
Регистрация
29.06.2019
Сообщения
107
Благодарностей
66
Баллы
28
Вот примерно так или что то в этом роде.
блок if:
bool usl1 = DOM.Contains(Условие1);
bool usl2 = DOM.Contains(Условие2);
bool usl3 = DOM.Contains(Условие3);

bool usl = (usl1 || usl2 && usl3);

if (usl ){
    throw new Exception("Выход по ошибке");
}
Это не то. По сути тоже самое у меня реализовано в самом if, только в более удобно читаемом виде. У меня задача редактировать условия в одном месте.

Выноси код в общий код и оформляй как функцию.
Потом просто вызывай ее в любом кубике.
Точно, вот про него то я забыл
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)