2014-12-22 30 views
1

我可以在ASP.Net AppDomain下進行定期AppDomain以及在其他一些情況下運行一些基礎的代碼下運行。如何識別代碼是否ASP.Net或常規的AppDomain

代碼的行爲應該是這兩種情況的不同。

如何才能辨別其下型AppDomain我不依賴於System.Web命名空間組件,因爲這是基礎的代碼運行

例如:

public static string BasePath 
{ 
    get 
    { 
     var isAspNetAppDomain = ... 
     return isAspNetAppDomain 
      ? Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin") 
      : AppDomain.CurrentDomain.BaseDirectory; 
    } 
} 
+0

檢查註釋中的鏈接問題。 – Andrey

+1

@Andrey鏈接的答案需要依賴於'System.Web',我不能這樣做。我編輯了這個問題來反映這個約束。 –

+1

無論如何,這個答案被批評爲不可靠,這一個更好,沒有依賴:'(AppDomain.CurrentDomain.GetData(「。appDomain」)!= null)' – Andrey

回答

1

一般情況下,這樣的事情是一個不好的設計。如果在兩種情況下行爲不同,那麼它實際上是兩種分開的方法,或者是一種帶有bool參數的方法:

public static string GetBasePath(bool isAspNetAppDomain) 
{ 
     return isAspNetAppDomain 
      ? Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin") 
      : AppDomain.CurrentDomain.BaseDirectory; 
} 
+0

問題是關於如何弄清楚isAspNetAppDomain是什麼... – i3arnon