【发布时间】:2013-03-04 03:21:32
【问题描述】:
我目前正在使用一个库 (SuperWebSocket),它是一个 websocket 服务器库,它使用引导程序知道从配置文件中加载哪些实例。我已经为此实现了一个引导类(但是没有使用 IoC 加载实例)。来自该服务器的命令也是从程序集反射加载的。我想将此服务器与使用 IoC 的 DAL 和服务层结合使用。 我的主要问题是我无法找到一种方法将这个控制台应用程序(服务器)和与 lib 的合作放入 IoC 场景中,而不必最终使用 ServiceLocator。
通常内核(Ninject)应该位于组合根(看起来是许多周围的最佳实践..),在这种情况下这是不可能的,或者至少我没有发现如何这样做这就是我在这里的原因。这些命令也是从程序集反射加载的。我可以实现一个 CommandLoader 但这仍然是一个问题,因为它们都继承自同一个接口(可能是多重绑定?)。我可以为它们中的每一个制作自定义界面,但我仍然找不到自动加载它们的方法。即使我找到了加载它们的方法,我仍然必须能够从属性中获取服务,这并不容易。
有什么建议吗?
【问题讨论】:
-
为什么不将外部库封装在您自己的适配器中,该适配器使用您的 IoC 容器?无论如何,将第三方库保留在一个地方并对其进行抽象是一种很好的做法,以防您需要将它们换成其他东西或以不同方式处理特定情况。
标签: c# inversion-of-control ninject console-application service-locator