RepositoryModule.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. 
  2. using Admin.Core.Repository;
  3. using Autofac;
  4. using System.Linq;
  5. using System.Reflection;
  6. using Module = Autofac.Module;
  7. namespace Admin.Core.RegisterModules
  8. {
  9. public class RepositoryModule : Module
  10. {
  11. private readonly string _assemblyName;
  12. private readonly string _suffixName;
  13. /// <summary>
  14. /// 仓储注入
  15. /// </summary>
  16. /// <param name="assemblyName">程序集名称</param>
  17. /// <param name="suffixName">后缀名</param>
  18. public RepositoryModule(string assemblyName = "Admin.Core.Repository", string suffixName = "Repository")
  19. {
  20. _assemblyName = assemblyName;
  21. _suffixName = suffixName;
  22. }
  23. protected override void Load(ContainerBuilder builder)
  24. {
  25. //仓储
  26. var assemblyRepository = Assembly.Load(_assemblyName);
  27. builder.RegisterAssemblyTypes(assemblyRepository)
  28. .Where(a => a.Name.EndsWith(_suffixName))
  29. .AsImplementedInterfaces()
  30. .InstancePerLifetimeScope()
  31. .PropertiesAutowired();// 属性注入
  32. //泛型注入
  33. builder.RegisterGeneric(typeof(RepositoryBase<>)).As(typeof(IRepositoryBase<>)).InstancePerLifetimeScope();
  34. builder.RegisterGeneric(typeof(RepositoryBase<,>)).As(typeof(IRepositoryBase<,>)).InstancePerLifetimeScope();
  35. }
  36. }
  37. }