我有一个类库,在内部我已经构建了使用依赖注入(ninject)。它被各种项目使用; MVC,Windows服务,REST apis等。
我只是有一个类似的课程:
public class KittenInvestigator
{
[Inject]
public IKittenDetectorDevice KittenDetectorDevice { get; set; }
...
}
谷歌搜索到这个问题我已经发现在类库中初始化ninject是不可能的,因为没有' startup'方法或钩子。
我正在寻找解决方法。有很多关于这个问题的帖子,但我找不到任何解决方案或解决方法。有什么想法吗?
我考虑过的一些事情:
将绑定放入引用库的项目中。这是非常糟糕的,因为注入在库内部使用,以便外部组件永远不会知道它 - 他们必须神奇地知道添加这些绑定或库不会工作。
某种反射,使我在主项目中的ninject代码扫描ninject模块的所有程序集并初始化它们。
类库中的静态初始化方法,必须由主项目调用,以设置ninject内容(看起来很俗气)。
其他一些聪明的设计。
答案 0 :(得分:1)
您可以使用启动方法,创建一个名为bootstrapper的静态类,并在静态构造函数中执行DI容器的组合。
答案 1 :(得分:0)
可以使用Fody.ModuleInit在加载程序集时自动引导库。但我不会推荐它,而是做以下任何一种: