我知道这个问题与之前几个类似,但是我找不到确切的答案。我有一个应用程序框架,除其他外,处理未处理的错误。目前,我要求主机应用程序在应用程序的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