NET Core 三层架构,依赖注入

来源:互联网 发布:webbench 源码 编辑:程序博客网 时间:2024/06/15 15:34


        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();        }    }

   


           

            




     

原创粉丝点击