同时使用继承和依赖注入

布莱克·里维尔(Blake Rivell)

这是我的应用程序调用数据库的方式:Web应用程序->业务层->数据层

一切都在使用依赖注入。

例如:

在我的Web应用程序的控制器中,我进行如下调用:

await _manager.GetCustomers();

进入我的业务层:

public class CustomerManager : ICustomerManager
{
    private ICustomerRepo _repository;
    public CustomerManager(ICustomerRepo repository)
    {
        _repository = repository;
    }

    public Task<IList<Customer>> GetCustomers(string name = null)
    {
        return _repository.GetCustomers(name);
    }
}

哪个进入我的数据层:

public class CustomerRepo : BaseRepo, ICustomerRepo
{
    public CustomerRepo(IConfigurationRoot configRoot) 
    : base(configRoot)
    {
    }

    public Customer Find(int id)
    {
        using (var connection = GetOpenConnection())
        {
            ...
        }
    }
}

这里的技巧是,CustomerRepo继承自BaseRepo以便能够使用GetOpenConnection()函数。但是同时,BaseRepo需要从Web应用程序注入IConfigurationRoot。我该怎么办?

public class BaseRepo
{
    private readonly IConfigurationRoot config;

    public BaseRepo(IConfigurationRoot config)
    {
        this.config = config;
    }

    public SqlConnection GetOpenConnection(bool mars = false)
    {
        string cs = config.GetSection("Data:DefaultConnection:ConnectionString").ToString();
        ...
    }
}
瑞安·M

无论依赖项注入如何,您将如何实例化(甚至编译)CustomerRepo?您需要一个IConfigurationRoot参数来传递给基本构造函数。喜欢:

public CustomerRepo(IConfigurationRoot configRoot) 
    : base(configRoot)
{
}

有关基本关键字的信息,请参见https://msdn.microsoft.com/zh-cn/library/hfw7t1ce.aspx

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP依赖注入和继承

来自分类Dev

PHP依赖注入和继承

来自分类Dev

.Net核心依赖注入和类继承

来自分类Dev

如何对继承的类使用依赖注入?

来自分类Dev

使用继承模板化的服务依赖注入

来自分类Dev

如何使用Type-GraphQL,TypeORM和依赖项注入实现解析器继承

来自分类Dev

Laravel依赖注入与继承

来自分类Dev

Angularjs Typescript控制器继承和依赖注入

来自分类Dev

在Angular2中,使用继承还是注入依赖关系?

来自分类Dev

在尊重控制反转的同时在.NET Core中使用依赖注入

来自分类Dev

在组件和依赖注入中使用类

来自分类Dev

依赖注入和范围?

来自分类Dev

多态和依赖注入

来自分类Dev

依赖注入和IDisposable

来自分类Dev

依赖注入和实体

来自分类Dev

依赖注入和测试

来自分类Dev

同时关联和依赖?

来自分类Dev

TypeScript,带继承的Angular 2依赖注入

来自分类Dev

依赖注入无法解决继承的服务(DbContext)

来自分类Dev

如何在python中同时使用封装和继承

来自分类Dev

使用Owin和Simple Injector进行UserManager依赖项注入

来自分类Dev

如何使用AutoFac和OWIN进行依赖项注入?

来自分类Dev

使用依赖注入和“完成”编写Karma + Mocha测试吗?

来自分类Dev

使用多个dbcontext实例和依赖项注入

来自分类Dev

在Geb功能测试中使用服务bean和依赖注入

来自分类Dev

使用Spring,MongoDB和Kotlin进行JUnit依赖注入

来自分类Dev

使用Owin和Simple Injector进行UserManager依赖项注入

来自分类Dev

如何使用 XmlSerializer 和 autofac 注入依赖项?

来自分类Dev

C ++循环依赖和继承