這裏是我的應用程序如何使對數據庫的調用: 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();
...
}
}
'CustomerRepo'的構造函數是怎樣的?它是否需要一個'IConfigurationRoot'並將其提供給基礎構造函數? –
我目前在我的CustomerRepo中沒有構造函數,我認爲這可能是我錯過的!我不明白我如何做到這一點的語法。如果BaseRepo在類聲明中,並且在此之後聲明構造函數。我怎樣才能將它作爲參數發送給BaseRepo?你能告訴我一個例子嗎? –
'BaseRepo'是否有無參數的構造函數? 'CustomerRepo'是否被編譯? –