Могу ли я обнаружить сетевое соединение с помощью директив прекомпилятора в C # / Visual Studio?например, #if ConnectedToNetwork - PullRequest
2 голосов
/ 09 июня 2011

У меня не всегда есть сетевое соединение, когда я кодирую / тестирую, когда я кодирую, когда я путешествую (поезд, полеты и т. Д.).Я хотел бы настроить условие прекомпилятора, чтобы пропустить некоторый код, если соединение не обнаружено.Конечно, я могу просто справиться с ошибками, но я не хочу, чтобы эта логика была частью базы кода.Есть ли способ сделать это?Возможно с макросами?

Пример:

#if ConnectedToNetwork
    PerformFunctionThatRequiresNetwork();
#else
    DoSomethingElseThatDoentRequireNetwork();
#endif

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

Знаете ли вы, когда у вас нет сети? Если так, то почему бы не установить новое определение сборки с параметром «нет сети» и использовать его при отладке, если вы знаете, что у вас нет сети? Я думаю, что это будет гораздо проще, поскольку это проблема разработки, а не создание программного шага прекомпиляции.

Что касается «Я должен сделать это в прекомпиляции», я бы выделил код, который вызывает сеть, и скомпилировал «не сетевую» версию. Это можно легко заменить во время этапа компиляции для отладки и решения проблемы.

Другой вопрос, лучше ли это подается во время выполнения. Должны ли пользователи также отключать сетевые биты, когда у них нет сети, или вы просто обрабатываете эту возможность через исключения?

0 голосов
/ 09 июня 2011

Я так не думаю ... Самое близкое к тому, что вам нужно, это своего рода плагин, который обменивается файлами на лету, но я не думаю, что такие вещи существуют.

Я верюЛучше всего обрабатывать его через прокси-классы.То есть создайте интерфейс для функций, которые вам нужно подключить к сети / не подключенных к сети, и реализовать два разных класса.Затем загрузите соответствующий класс обработчика на основе конфигурации или обнаружения сети.

hth

Mario

...