我不確定最好的解釋方法,所以請留下評論,如果你不明白。只有在加載(.NET)DLL時才執行函數的最佳方法?
基本上,我有幾個庫可以處理不同程序的各種任務 - 通知只是一個例子。
現在,我正在構建一個新程序,我希望它儘可能輕量級。雖然我想包括我的通知引擎,但我不認爲很多人會真正使用它的功能,所以,我寧願不包括它在默認情況下 - 就像可選下載一樣。
我該如何編程?
使用非託管Dll和P/Invoke,我基本上可以將所有內容包裝在try/catch循環中,但我不確定託管版本。
到目前爲止,我能想到的最好的方法是檢查啓動時是否存在DLL文件,然後設置一個字段布爾或類似的,每次我想要通知被解僱,我可以做一個if /檢查布爾和火...
我已經從調試窗口看到DLL文件只在需要的時候加載。程序顯然會編譯,因爲所有的組件都可以在項目中看到,但是它會運行在最終用戶沒有DLL的機器上嗎?
更重要的是,有沒有更好的方法來做到這一點?
我會理想地喜歡在我的應用程序中沒有關於通知的任何內容,並以某種方式擁有它,以便如果下載DLL文件,它會在外部添加此功能。真的不是世界末日有幾個額外的字節叫做notification("blabla");
(或類似的),但是當我有更大的意圖,並且只想知道這種事情的最佳實踐時,我正在考慮更進一步。
細微的區別,但您也可以測試加載是否成功,而無需知道路徑。組件綁定配置可以用來控制例如沒有程序需要知道名稱解析如何工作的插件目錄的位置。換句話說,代碼應該對實際的物理彙編文件不可知。 – harpo 2011-02-26 23:55:26
我會看看System.Reflection.Assembly - 謝謝.... ...編輯你的答案的空白,因爲它說我已經投了票,不會讓我投票...我認爲有關之前的停電。 – Wil 2011-02-27 00:52:48