2011-07-25 41 views
0

在我的解决方案中,我有几个库项目。
我希望每个库项目都会在应用程序启动时进行一些初始化。当应用程序启动时初始化库项目

我知道我可以使用静态类和静态方法,但我不知道这是否是最好的解决方案。

这些库可用于Web应用程序或win应用程序。

这样做的最佳方法是什么?

编辑:
例: “通用” 项目由 “传输” 项目引用。 “通用”定义允许注册的警报结构。在应用程序初始化过程中,我希望“传输”在“通用”警报结构中注册自己的警报。

+1

“......进行一些初始化”太过分了 - 举例说明在应用程序启动时会发生什么。 – Filburt

+0

@Filburt:添加示例。 – Naor

回答

3

我会建议使用像Managed Extensibility Framework,然后你可以创建一个包含Initialize方法,当你的应用程序启动时,你会使用MEF来获取所有可用的库,并呼吁他们Initialize方法的接口。这更加灵活,可让您在将来添加和删除新组件。

3

不完全确定你想要达到的目标。使用静态功能时,您没有保证它们被初始化的顺序。这可能不是要求。

不同的选择是在每个库中实现一个简单的类,前提是这些程序集也包含托管代码。

在应用程序的启动顺序中,您可以使用反射遍历所有库,然后在每个库中找到该简单类,创建它的一个实例并调用包含初始化代码的方法。

有不同的方式来识别每个库中的简单类。我的建议是让他们实现一个特定的接口或从一个特定的类派生。在这种情况下,应用程序的启动顺序可以使用定义明确的界面。

通过这种方法,您还可以选择添加一些逻辑来强制执行初始化代码的特定序列。

+0

我如何保证项目初始化的顺序?我不确定我是否理解你,你能举一个例子给你的建议吗? – Naor

相关问题