Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Организация структуры программы с большим числом п


Автор: mur88 15.7.2013, 11:49
Подскажите, пожалуйста, как правильно организовать структуры консольного приложения с большим числом параметров в args. Так же некоторые из этих параметров могут комбинироваться друг с другом, а некоторые не.

Где можно почитать что нибудь по этому поводу.

Автор: gambit 15.7.2013, 14:01
Что по этому поводу читать? Тебе приходит массив параметров, разбирая их, выставляешь флаги в программе, позже реагируешь поведением на эти флаги.

Автор: dzaraev 16.7.2013, 20:52
Во-первых определите набор самих параметров приложения и заверните их в специально созданный для них класс, например "MySettings".

Во-вторых надо определить формат(синтаксис) параметров командной строки. Можно ориентироваться на целевую платформу и принятый там формат (в Win-системах один, в Unix другой), либо определить свой собственный. Обязательно выводить инфу об этом синтаксисе по запросу хэлпа (который может быть -?, /?, \?, -help и т.д.).

В-третьих, в соответствии с этим определенным синтаксисом и классом MySettings, необходимо написать свой парсер, на вход метода "Parse" которого будут переданы параметры ком. строки (в виде массива или в виде одной строки), а на выходе, соответственно будет возвращаться инициализированный экземпляр класса MySettings.

В дальнейшем, вы можете передавать ваш MySettings через какое-нибудь статическое свойство, чтобы получить доступ к нему из любого места программы. Также, рекомендую при запросе текущих настроек возвращать не сам MySettings, а создать интерфейс IMySettings, в котором все свойства, отвечающие за параметры ком. строки сделать доступными только для чтения (MySettings, естественно, должен реализовать IMySettings).

Почитать не могу рекомендовать ничего, кроме гугла. Можете еще попробовать поискать какие-либо готовые решения вашей задачи (с готовым форматом, парсером или типа того), но чего-то конкретного опять-таки лично не пользовал и подсказать с ходу не могу.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)