您的位置:首页 > 运维架构 > 网站架构

NET Core 三层架构,依赖注入

2017-07-13 14:23 260 查看
        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();
}

}


   

           

            

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: