我知道這個問題與之前幾個類似,但是我找不到確切的答案。我有一個應用程序框架,除其他外,處理未處理的錯誤。目前,我要求主機應用程序在應用程序的Main
方法中調用Register
方法來註冊處理程序和各種子系統。我真的想擺脫這種依賴性,並用一些彙編級屬性替換Register
方法的參數。所以,我需要的是一種檢測主機應用程序是否已經從我的程序集中啓動的方式 - 就像它是.NET框架的一部分一樣。如何在應用程序啓動時執行彙編代碼
我想避免從主機應用程序或配置文件中的任何特殊行(儘管這些更可接受)的任何顯式調用。因此,只需添加對程序集的引用即可在應用程序啓動時初始化這些功能。有沒有人制定過這種方法?
爲了把事情說清楚,這是我理想的一個例子之前和場景後:
// BEFORE:
[System.STAThread]
private static int Main(string[] args)
{
SupportLibrary.Register(typeof(Program).Assembly, SupportLibrary.ApplicationType.WinForms);
// Get the application initialised...
}
// AFTER:
[System.STAThread]
[SupportLibrary.ApplicationType(SupportLibrary.ApplicationType.WinForms)]
private static int Main(string[] args)
{
// Get the application initialised...
}
問題的關鍵是,我想擺脫顯式調用的註冊,支持庫中,而是有它們在應用程序啓動並加載支持程序集時隱式註冊。
但是,這將需要主機應用程序啓動時執行一些特殊的操作 - 或者我錯過了你的觀點? – 2010-03-11 10:37:33
是的,主機應用程序將不得不執行初始化,但這個代碼應該只寫一次,不需要對其進行更改。在你編寫了這個初始化代碼之後,只有添加對程序集的引用才能使其工作。 – 2010-03-11 11:09:38