我目前正在使用一个库(SuperWebSocket),它是一个websocket服务器库,它使用一个引导程序来知道从配置文件加载哪些实例。我为此实现了一个bootstrap类(但实例并未使用IoC加载)。此服务器的命令也从程序集反射中加载。我想将这个服务器与我使用IoC的DAL和服务层结合使用。 我的主要问题是我无法在IoC场景中找到将此控制台应用程序(服务器)与lib配合的方法,而无需最终使用ServiceLocator。
通常内核(Ninject)应该位于组合根(看起来是许多人的最佳实践..)在这种情况下是不可能的,或者至少我没有找到如此那就是我在这里的原因。命令也从程序集反射中加载。我可以实现一个CommandLoader但是这仍然是一个问题,因为它们都从相同的接口继承(Multibinding可能?)。我可以为每个人制作自定义界面,但我仍然找不到自动加载它们的方法。即使我找到了加载它们的方法,我仍然必须能够从不容易做的属性中获得服务。
有什么建议吗?
答案 0 :(得分:2)
如果我理解你的问题,那么图书馆就是所有工作的切入点。在这种情况下,它取决于框架该做什么。这里有一些你可以做的事情,首先是首选的东西:
kernel.Inject(this)
。查看Ninject.Web
扩展程序。那里我们添加了一些基类,例如NinjectWebPage
WebPage
。这个新的基类在创建后调用kernel.Inject。现在可以从该基类派生新的网页,并使用属性注入来获取依赖关系。ServiceLocator
模式。但就在这个层面。更深层次的东西应该使用依赖注入。