Определить выигрыш или веб-формы - PullRequest
0 голосов
/ 26 мая 2009

Есть ли надежный элегантный способ определить, является ли текущее приложение выигрышным или веб-формой (или другим)?

У нас есть общий класс конфигурации, который нужно открыть либо app.config, либо web.config.

В настоящее время я улавливаю ArgumentException при попытке OpenExeConfiguration, но он не очень элегантен и может скрывать другие проблемы.

Ответы [ 3 ]

3 голосов
/ 26 мая 2009

Я обычно проверяю, доступен ли HttpContext (если это веб-приложение, поскольку в веб-службе HttpContenxt.Current равно нулю) Для этого необходимо добавить System.Web к вашим ссылкам.

if(HttpContext.Current!=null)
//It's a web application
else
//it's a win application
1 голос
/ 26 мая 2009

Попробуйте использовать внедрение зависимостей, чтобы класс config не делал оператор switch.

0 голосов
/ 26 мая 2009

Вы можете попытаться получить исполняемый процесс через Process.GetCurrentProcess(), возможно, вы можете проверить, что Process.MainWindowHandle не IntPtr.Zero, или проверить имя процесса, или, возможно, сканировать загруженные модули Процесса. Это будет иметь преимущество (я бы предположил) в том, что вам не нужно загружать сборки, которые не требуются для текущего контекста выполнения (например, не загружайте System.Windows.Forms.dll, когда это приложение является веб-приложением).

Однако это кажется не элегантным.

...