|
5
|
| Jeffrey Cameron · 技术社区 · 16 年前 |
|
|
1
2
杰弗里,你能举个例子说明你想做什么吗?我不明白你的观点,为什么/在哪里/如何混合这两个容器。如果您的代码完全是容器不可知论的,那么您将不会有任何问题使用任何一个容器进行连接。 |
|
|
2
6
我不能具体讨论如何将spring.net转换为ninject,但一般来说,所有应用程序代码都应该编写为 DI容器不可知论 . 考虑DI容器的最佳方法是 Hollywood Principle . 在DI术语中,它变成, 不要叫DI容器,它会叫你的。 . 换句话说,DI的最佳应用是使用简单的模式,例如 构造器注入 和 抽象工厂 . 大多数的DI容器本身就很了解这些模式,因此不需要特殊的、特定于DI容器的跳过环。 这也意味着理想情况下,在应用程序的单个文件中应该只有特定于DI容器的代码。这个地方叫 组成根 这就是DI容器连接整个对象图并避开的地方。 如果遵循这个原则,您可以很容易地将一个DI容器替换为另一个。 以下文章有更多详细信息: |
|
|
3
2
我的另一个回答中所说的一切都是我的意思。然而,我也意识到如果你 目前 使用spring.net作为服务定位器(也就是说,在查询容器的代码库中到处都是代码),这个答案可能不会很有帮助。 如果是这种情况,您可以找到 Common Service Locator 有帮助的项目。它是一个开源项目,试图抽象掉特定的服务定位器,将它们全部隐藏在公共接口后面。 虽然它们似乎没有ninject实现,但它们确实有一个spring.net实现,所以这可能会让您走到一半。 为了记录, 我认为服务定位器是一种反模式 并发现公共服务定位器是 对错误问题的错误回答 . 在我看来,这是完全多余的,但作为中间步骤,它可能对你有所帮助。 |