c# - 如何避免与 IoC 容器耦合

标签 c# dependency-injection ioc-container ninject dependency-management

我正在使用 DI 和 IoC 开发一个可扩展的框架。用户必须能够通过将自己的实现放入容器中来覆盖框架内的现有功能。

我怎样才能允许用户执行此操作而不要求他们知道我使用的是哪个 IoC 容器?

我目前的中途解决方案是按如下方式构建我的程序集:

1) 定义只包含接口(interface)的抽象程序集。

2) 定义实现这些接口(interface)的具体程序集。用户可以定义自己的功能以覆盖现有功能。

3) 在单独的程序集中定义容器绑定(bind);即每个具体组件一个绑定(bind)组件。

这意味着具体组件没有与特定的 IoC 容器耦合,如果我使用不同的容器,它们将因更改而关闭。但是,用户仍然需要知道我的框架正在使用哪个容器来编写绑定(bind)程序集,并且如果我更改了 IoC 容器(即从 Ninject 到 Spring),他们将需要发布新的绑定(bind)程序集。

我错过了什么吗?

最佳答案

Write loosely coupled code .应用程序应该依赖于容器。 Frameworks不应该。

关于c# - 如何避免与 IoC 容器耦合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5789593/

相关文章:

c# - 在 C# 中获取启动快捷方式

c# - CaSTLe - 使用工厂方法和 Transient Lifestyle

c# - 从 SQL 服务器表的模式自动定义 C# 中的数据表?

c# - 检查xml节点是否存在?

c# - 在 Visual Studio 中使用引用调试项目

c# - MEF更新导出的部件元数据(元数据 View 无效,因为属性有属性设置方法)

asp.net-mvc - 授权和温莎

javascript - 我的 Angular 应用程序中的依赖注入(inject)在哪里出了问题

php - 如何在 Symfony 4 的控制台命令中使用记录器?