应用程序启动时初始化库项目

时间:2011-07-25 18:09:24

标签: c# .net initialization

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

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

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

最好的方法是什么?

修改
示例:“传输”项目引用的“公共”项目。 “Common”定义了允许注册的警报结构。在应用程序初始化中,我希望“Transmissions”在“Common”的警报结构中注册自己的警报。

2 个答案:

答案 0 :(得分:3)

不完全确定您要实现的目标。使用静态函数,您没有保证订单的初始化。这可能不是必要条件。

另一种选择是在每个库中实现一个简单的类,假设这些是包含托管代码的程序集。

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

有各种方法可以识别每个库中的简单类。我的建议是让他们实现特定的接口或从特定的类派生。在这种情况下,您将拥有一个定义良好的接口,您的应用程序的启动顺序可以使用。

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

答案 1 :(得分:3)

我建议使用类似Managed Extensibility Framework之类的东西然后你可以创建一个包含Initialize方法的界面,当你的应用程序启动时你会使用MEF来获取所有可用的库并调用它们Initialize方法。这样更灵活,允许您在将来添加和删除新组件。