Обычно, вы можете заменить большие конструкции if / else или switch / case на Словарь. Где ключ-критерий является ключом, а код для выполнения является значением.
Например, вы можете добавить Dictionary<string, ICommand>
(или Dictionary<string, Type>
), который вы заполняете перед анализом командной строки.
Когда вы перебираете переданные параметры командной строки, вы просто просматриваете их в словаре и «вызываете» для значения, которое является соответствующей командой (объектом) для выполнения (или, альтернативно, используете Activate.CreateInstance(/*dictionary-value*/)
, если вы сохранили тип вместо конкретного экземпляра объекта).
В C # 3.0 вы могли бы также что-то вроде Dictionary<string, System.Linq.Expressions.Expression<T>>
, хотя это довольно близко приближает вас к фактическому выражению if - что вы можете захотеть иметь или нет. YMMV.
Некоторые библиотеки предоставляют вам простой анализ аргументов командной строки (как это обычно делал getopt () и др.) Или могут предоставить весь пакет, включая вызов действий при наличии определенных аргументов командной строки.