我正在編寫一個可以被各種.net應用程序使用的軟件組件。無論如何,組件可以意識到它是否被ASP.Net Windows窗體,WPF,Silverlight應用程序,WCF服務調用...?是否可以確定運行時正在調用的.net組件的類型?
2
A
回答
2
不是真的,因爲一個應用程序可能使用多個框架。你最好的選擇可能是看哪個程序集加載到調用的AppDomain中,並從那裏獲取:)
0
關於我能想到爲什麼你需要這些信息的唯一原因是,如果你遇到「Invoke」問題,你需要在哪裏等。一個winforms應用程序的GUI線程。
如果這是原因,那麼這個被SynchronizationContext類抽象出來。
如果是其他原因,可能會有助於我們瞭解您爲什麼需要此信息。可能有一個類似的抽象已經創建,以滿足您的需求。
1
正如@cwap所說,使用AppDomain.CurrentDomain.GetAssemblies()
並檢查是否找到WinForms或Asp。
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
if (assembly.Location.EndsWith("System.Windows.Forms.dll"))
Console.WriteLine("Winforms is loaded");
}
相關問題
- 1. .NET 4.5可移植類庫:是否可以在運行時確定平臺?
- 2. 確定正在運行的應用程序的類型(.NET)
- 3. 確定powershell是否調用正在運行的exe文件?
- 4. 是否可以在運行時在DataTable中定義列類型?
- 5. 是否可以在運行時更改AngularJS變量的類型?
- 6. 確定一個可執行文件是否正在運行
- 7. 是否可以在運行時編輯.NET可執行文件的資源?
- 8. .NET運行時是否調用過Thread.Abort()?
- 9. 是否可以表示在TypeScript中運行時定義其原型的類?
- 10. Microsoft Unity - 是否可以在運行時更改註冊類型?
- 11. 是否可以在運行時創建「反彙編」類型?
- 12. 註解變量是否可以在運行時確定?
- 13. 是否可以在Typescript中定義'string類型數組的對象? (類型檢查的正確位置?)
- 14. 確定進程是否正在運行?
- 15. 確定作業是否正在運行
- 16. 在運行時確定的泛型類型調用非泛型方法c#
- 17. 確定.NET類型是否是動態的(使用Reflection.Emit創建)
- 18. 運行時間確定C的類型
- 19. 是否可以在DHTML運行時加載openlaszlo swf 10運行時組件?
- 20. 是否可以確定某個類型是否是範圍枚舉類型?
- 21. 使用在運行時確定的類型參數調用泛型函數
- 22. 在非通用類在運行時確定泛型類型
- 23. 運行時通用類型確定
- 24. 是否可以使用完整.NET框架的運行時運行Silverlight代碼?
- 25. 在運行時確定協議類型
- 26. 是否可以在運行時更改組件樣式?
- 27. 不正確的C++運行時組件
- 28. 是否可以在使用ruby讀取文件時指定換行符類型
- 29. 可以在運行時確定數組的大小c?
- 30. 在運行時確定一個通用類的類型
恐怕這是一個比特定需求更具推測性的問題。我所指的組件向其所在的infrastrucutre框架提供信息(類似於Environment.Context)。我試圖確定哪些信息可以確定並公開給其他基礎設施組件使用。例如,其運行的位置,以便組件可以使用區域特定的設置,部署類型,以便組件可以根據測試或生產情況採取不同的行爲。 – gouldos 2010-12-03 10:17:34