对子对象的依赖注入

时间:2016-09-13 19:51:34

标签: asp.net-core asp.net-core-mvc .net-core asp.net-core-1.0

我正在尝试找到如何使用依赖注入来注入ConnectionString或自定义AppSetting对象到目前为止我最终在启动时使用

services.Configure<IConnectionStrings>(Configuration.GetSection("MyConnection"));

示例图层

  • Web MVC应用程序
  • 业务逻辑(类库)
  • 存储库(类库)
  • DAL(班级图书馆)
  • 模型(类库)

其中web仅查看业务逻辑等,模型可供所有人使用。

在DAL项目中,我有一个对象,负责连接和运行对我的数据库(CDbTools对象)的查询。

现在,如何直接注入CDbTools而无需从控制器下载到DAL。

谢谢。

2 个答案:

答案 0 :(得分:1)

依赖注入肯定需要一点点习惯,而且你不会像以前那样创建对象。你想要做的是首先修改你的CDbTools以获取注入的字符串。

public CDbTools(IConnectionStrings strings)
{
    _connectionString = strings
}

下一步是将CDbTools实际注入需要它的类中。首先,在启动时注册它。

services.AddScoped<CDbTools>();

你需要关注这个链条。不要认为它是从顶层向下传递物体 - 这会弄乱你的关注点分离。每个图层都注入了较低层。这不仅可以让您注入正在寻找的字符串。它可以让你更容易地模拟事物,更容易交换图层,以及一系列其他好处。

答案 1 :(得分:0)

我相信您应该将它添加到您的ConfigureServices方法中:

services.Configure<CustomSettings>(settings =>
{
    Configuration.GetSection("CustomSettings").Bind(settings);
});

其中services是您的IServiceCollection对象,CustomSettings是您要注入的自定义配置类。该自定义对象应映射到您的设置字段。

希望这有帮助!