Попробуй это.Сначала создайте перечисление флагов для всех особых параметров и их возможных комбинаций:
public enum ParamSet { none = 0, transferId = 1, weekId = 2, lineId =4,
// composite values
transferId_weekId = 3
}
здесь первая строка - отдельные флаги параметров: если параметр не равен нулю, флаг устанавливается, в противном случае - нет.Вторая строка для допустимых комбинаций параметров.Например, идентификатор перевода и недели.Это 3, потому что 1 + 2;
Затем проанализируйте текущие значения параметров:
ParamSet currentParams = (string.IsNullOrEmpty(transferId) ? ParamSet.none : ParamSet.transferId) | (weekId == null ? ParamSet.none : ParamSet.weekId) | (lineId == null ? ParamSet.none : ParamSet.lineId);
Наконец, получите switch
:
switch(currentParams)
{
case ParamSet.transferId_weekId: break;
case ParamSet.transferId: break;
default: throw new Exception("Unsoppurted param config");
}