- 项目Nuget中引入
Autofac.Extensions.DependencyInjection Autofac.Extras.DynamicProxy
- 在Business文件夹下新增AutofacRegister.cs 并继承与Autofac.Module,重新Load方法
public class AutofacRegister : Autofac.Module { protected override void Load(ContainerBuilder builder) { //注册Service var assemblysServices = Assembly.Load("TEST.Services"); builder.RegisterAssemblyTypes(assemblysServices) .InstancePerDependency() // 瞬时单例 .AsImplementedInterfaces() //自动以实现的所有接口类型暴露(包括IDisposable接口) .EnableInterfaceInterceptors(); //引用Autofac.Extras.DynamicProxy; //注册Repository var assemblyRepository = Assembly.Load("TEST.Respository"); builder.RegisterAssemblyTypes(assemblyRepository) .InstancePerDependency() // 瞬时单例 .AsImplementedInterfaces() //自动以实现的所有接口类型暴露(包括IDisposable接口) .EnableInterfaceInterceptors(); //引用Autofac.Extras.DynamicProxy; } }
- 在Program.cs中注入Autofac
//注入Autofac builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureContainer<ContainerBuilder>(builder => { //调用程序集注册存入方法 builder.RegisterModule(new AutofacRegister()); });
- 在BaseServices里改造下,直接通过构造函数注入
//public IBaseRepository<TEntity> baseDal = new BaseRepository<TEntity>(); private readonly IBaseRepository<TEntity> baseDal; /// <summary> /// 构造函数 /// </summary> /// <param name="baseDal"></param> public BaseServices(IBaseRepository<TEntity> baseDal) { this.baseDal = baseDal; }
-
StudentServices中也要改下
private readonly IStudentRepository _studentRepository; /// <summary> /// 构造函数 /// </summary> /// <param name="baseDal"></param> /// <param name="studentRepository"></param> public StudentServices(IBaseRepository<Student> baseDal,IStudentRepository studentRepository):base(baseDal) { _studentRepository = studentRepository; }
- 新建接口读取所有学生信息来验证Autofac
IStudentService
/// <summary>
/// 查询所有学生列表
/// </summary>
/// <returns></returns>
Task<List<Student>> GetStudents();
StudentService
/// <summary>
/// 查询所有学生列表
/// </summary>
/// <returns></returns>
public async Task<List<Student>> GetStudents()
{
return await _studentRepository.Query();
}
StudentController
/// <summary>
/// 获取所有学生列表
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> GetStudents()
{
var students = await stuService.GetStudents();
return Ok(students);
}
运行项目
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容