在我的解決方案中,我有幾個庫項目。
我希望每個庫項目都會在應用程序啓動時進行一些初始化。當應用程序啓動時初始化庫項目
我知道我可以使用靜態類和靜態方法,但我不知道這是否是最好的解決方案。
這些庫可用於Web應用程序或win應用程序。
這樣做的最佳方法是什麼?
編輯:
例: 「通用」 項目由 「傳輸」 項目引用。 「通用」定義允許註冊的警報結構。在應用程序初始化過程中,我希望「傳輸」在「通用」警報結構中註冊自己的警報。
在我的解決方案中,我有幾個庫項目。
我希望每個庫項目都會在應用程序啓動時進行一些初始化。當應用程序啓動時初始化庫項目
我知道我可以使用靜態類和靜態方法,但我不知道這是否是最好的解決方案。
這些庫可用於Web應用程序或win應用程序。
這樣做的最佳方法是什麼?
編輯:
例: 「通用」 項目由 「傳輸」 項目引用。 「通用」定義允許註冊的警報結構。在應用程序初始化過程中,我希望「傳輸」在「通用」警報結構中註冊自己的警報。
我會建議使用像Managed Extensibility Framework,然後你可以創建一個包含Initialize
方法,當你的應用程序啓動時,你會使用MEF來獲取所有可用的庫,並呼籲他們Initialize
方法的接口。這更加靈活,可讓您在將來添加和刪除新組件。
不完全確定你想要達到的目標。使用靜態功能時,您沒有保證它們被初始化的順序。這可能不是要求。
不同的選擇是在每個庫中實現一個簡單的類,前提是這些程序集也包含託管代碼。
在應用程序的啓動順序中,您可以使用反射遍歷所有庫,然後在每個庫中找到該簡單類,創建它的一個實例並調用包含初始化代碼的方法。
有不同的方式來識別每個庫中的簡單類。我的建議是讓他們實現一個特定的接口或從一個特定的類派生。在這種情況下,應用程序的啓動順序可以使用定義明確的界面。
通過這種方法,您還可以選擇添加一些邏輯來強制執行初始化代碼的特定序列。
我如何保證項目初始化的順序?我不確定我是否理解你,你能舉一個例子給你的建議嗎? – Naor
「......進行一些初始化」太過分了 - 舉例說明在應用程序啓動時會發生什麼。 – Filburt
@Filburt:添加示例。 – Naor