Это не совсем то, что вам нужно здесь, но я использую метод Extension для реализации такого рода цепного метода, когда условие может быть разрешено до списка Or или And.
Что-то вроде
if (true.IfOr(condition1 == a, condition2 == b)
{
something();
}
метод расширения тогда довольно прост:
public static bool IfOr(this bool result, params bool[] tests)
{
foreach (bool test in tests)
if (!test)
return !result;
return result;
}
Еще один метод, который может работать, хотя и может быть не очень оптимальным, - это использовать делегат Predicate в .net и определить список методов.которые выполняют ваши отдельные единицы логики.Затем вы можете заменить свои вложенные третичные операторы лямбда-выражением.У меня нет примера кода для этого, извините.
И наконец, иногда нет ничего лучше, чем старый добрый оператор switch.Я полагаю, что .Net имеет тенденцию компилировать их в виде таблиц переходов, так что, если вы сначала упорядочите свой тест по наиболее кратным из них, то вы сможете получить довольно производительный и читаемый код.И это можно обслуживать, вместо того, чтобы скрывать логику или реализацию хитростями.