【发布时间】:2010-03-11 09:24:11
【问题描述】:
我知道这个问题与之前的几个问题相似,但我找不到确切的答案。我有一个应用程序框架,除其他外,它可以处理未处理的错误。目前我要求宿主应用程序在应用程序的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...
}
关键是我想摆脱注册支持库的显式调用,而是在应用程序启动和支持程序集加载时隐式注册它们。
【问题讨论】:
标签: c# assemblies load initialization