2009-05-26 11 views
0

現在のアプリケーションが勝利またはWebフォーム(またはその他の)アプリケーションであるかどうかを検出する、信頼性の高いエレガントな方法はありますか?勝利またはWebフォームを検出する

私たちには、app.configまたはweb.configのいずれかを開く必要のある共通の設定クラスがあります。

現在、私はOpenExeConfigurationを試してみるとArgumentExceptionをキャッチしていますが、それほどエレガントではなく、他の問題を隠すかもしれません。

答えて

3

私は通常これを行うために利用できるのHttpContext(WebサービスHttpContenxt.Currentにヌルであるため、それは、Webアプリケーションの場合) がありますチェックすると、あなたはあなたの参照にSystem.Webを追加する必要があります。

if(HttpContext.Current!=null) 
//It's a web application 
else 
//it's a win application 
+0

ありがとう、それは私が探していたものです –

1

configクラスがswitch文を実行する必要がないように、依存性注入を使用してみてください。

0

あなたはおそらくあなたがProcess.MainWindowHandleIntPtr.Zeroない、またはプロセス名を確認、または潜在的にプロセスのロードモジュールをスキャンチェックすることができ、Process.GetCurrentProcess()経由で実行中のプロセスを取得してみてください。これは、現在の実行コンテキストでは必要ないアセンブリをロードする必要がないという利点があります(たとえば、そのアプリケーションがWebアプリケーションの場合はSystem.Windows.Forms.dllをロードしないでください)。

しかし、これは優しくないようです。

+0

サービスにはMainWindowHandleもないので、これがサービスであればこれは失敗します。 私は実行中のプロセスを尋ねるのを避けたいと思っていました。 –

関連する問題