ASP.NET Core 2.0使用Autofac实现IOC依赖注入竟然能如此的优雅简便

 赖注入 (DI) 的软件设计模式,代码的设计是遵循着“高内聚、低耦合”的原则,使得各个类与类之间的关系依赖于接口,这样做的目的是能更有利于项目代码的维护与扩展。

 

Autofac

在进入主题之前咱们还是先来简单的认识下鼎鼎大名的“Autofac”吧。那么何为Autofac呢,通俗的讲就是一个开源的,且基于.NET Core、ASP.NET Core、.NET 4.5.1+等框架实现的控制反转(IOC)类库。通过Autofac可以在.NET Core、ASP.NET Core、.NET 4.5.1+等项目上很容易的实现依赖注入,代码很容易就能达到“高内聚、低耦合”的原则。另外,Autofac的中文资料也很多,需要详细了解的也可在网上自行查看。

Autofac官方网站:

  1 using System;  2 using System.Collections.Generic;  3 using System.Data;  4 using System.Linq;  5 using System.Linq.Expressions;  6 using System.Text;  7 using System.Threading.Tasks;  8   9 namespace Lezhima.Data.Interface 10 { 11     public interface IRepository<T> where T : class 12     { 13         /// <summary> 14         /// 从指定的表中获取符合条件的一条实体数据 15         /// </summary> 16         /// <param name="predicate"></param> 17         /// <returns></returns> 18         Task<T> GetAsync(Expression<Func<T, bool>> predicate); 19     } 20 }
复制代码

 

3、在Lezhima.Data层再增加一个名为“Repository”类,实现“IRepository”接口,代码如下:

复制代码
  1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Text;  5 using System.Threading.Tasks;  6 using System.Data;  7 using System.Linq.Expressions;  8 using Microsoft.EntityFrameworkCore;  9 using System.Data.SqlClient; 10 using Lezhima.Data.Interface; 11  12 namespace Lezhima.Data 13 { 14     /// <summary> 15     /// 数据层 16     /// 实现IRepository接口 17     /// </summary> 18     /// <typeparam name="T"></typeparam> 19     public class Repository<T> : IRepository<T> where T : class 20     { 21  22         /// <summary> 23         /// 从指定的表中获取符合条件的一条实体数据 24         /// </summary> 25         /// <param name="predicate"></param> 26         /// <returns></returns> 27         public async Task<T> GetAsync(Expression<Func<T, bool>> predicate) 28         { 29             using (var db = new LezhimaContext()) 30             { 31                 if (predicate == null) 32                     return null; 33  34                 return await db.Set<T>().Where(predicate).FirstOrDefaultAsync<T>(); 35             } 36         } 37     } 38 } 39 
复制代码

 

4、在Lezhima.Core层再定义一个名为“IUserCore”接口,代码如下:

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信