NET Core 三層架構,依賴注入
NET Core搭建三層架構,每層之間使用依賴注入獲取例項
專案結構如下
常用的三層,Web-BLL-DLL
BLL與DAL層分為Interface裡邊是提供介面,Implments提供實現類,DIRegister提供依賴注入的對映關係
一:新建好三層新增好每層之間的依賴
專案之間的依賴還是像以前一樣,右鍵新增引用即可
vs2017新增引用的是可能會報錯:找不到 Microsoft.VisualStudio.Shell.Interop.IVsReferenceManager 服務的例項
解決方法:http://blog.csdn.net/aojiancc2/article/details/74972566
DeptMangerBLL.cs程式碼:
裡邊通過建構函式注入呼叫DAL層的方法
public class DeptMangerBLL: IDeptMangerBLL { private IDeptMangerDAL _idl; //建構函式注入 public DeptMangerBLL(IDeptMangerDAL idl) { _idl = idl; } public string GetDName() { string dname = _idl.GetDName(); return dname; } }
二:每層之間配置好依賴注入的對映關係
BLL層
//BLL層的依賴注入 public class BLLDIRegister { public void DIRegister_DAL(IServiceCollection services) { //配置一個依賴注入對映關係 services.AddTransient(typeof(IDeptMangerBLL), typeof(DeptMangerBLL)); //註冊DAL層的依賴注入 DALDIRegister sdr = new DALDIRegister(); sdr.DIRegister_DAL(services); } }
DAL層
//DAL層的依賴注入
public class DALDIRegister
{
public void DIRegister_DAL(IServiceCollection services)
{
services.AddTransient(typeof(IDeptMangerDAL), typeof(DeptMangerDAL));
}
}
注意在.NET Core類庫中沒有引用依賴注入的類庫:Microsoft.Extensions.DependencyInjection
根本就獲取不到IServiceCollection
所以需要新增Microsoft.Extensions.DependencyInjection的引用,可以右鍵管理Nuget程式包然後搜尋
新增依賴
也可以在.csproj中配置依賴Nuget會自動下載,配置如下:
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="1.1.1" />
</ItemGroup>
三:在Startup.cs的ConfigureServices中新增各層的依賴注入配置
public void ConfigureServices(IServiceCollection services)
{
//註冊BLL層的依賴注入配置
BLLDIRegister sdr = new BLLDIRegister();
sdr.DIRegister_DAL(services);
services.AddMvc();
}
配置好後controller中就可以很方便的使用中BLL的類了
public class HomeController : Controller
{
private IDeptMangerBLL _id;
//建構函式注入
public HomeController(IDeptMangerBLL id)
{
_id = id;
}
public IActionResult Index()
{
//呼叫介面中的方法
string dname = _id.GetDName();
return View();
}
}