AutofacModuleRegister.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132
  1. using Autofac;
  2. using System;
  3. using System.Linq;
  4. using System.Reflection;
  5. namespace YiSha.Admin.WebApi.AutoFac
  6. {
  7. public class AutofacModuleRegister : Autofac.Module
  8. {
  9. //重写Autofac管道Load方法,在这里注册注入
  10. protected override void Load(ContainerBuilder builder)
  11. {
  12. //注册Service中的对象,Service中的类要以Service结尾,否则注册失败
  13. builder.RegisterAssemblyTypes(GetAssemblyByName("YiSha.IService")).Where(a => a.Name.StartsWith("I") && a.Name.EndsWith("Service")).AsImplementedInterfaces();
  14. builder.RegisterAssemblyTypes(GetAssemblyByName("YiSha.Service")).Where(a => a.Name.EndsWith("Service")).AsImplementedInterfaces();
  15. builder.RegisterAssemblyTypes(GetAssemblyByName("YiSha.IBusiness")).Where(a => a.Name.StartsWith("I") && a.Name.EndsWith("BLL")).AsImplementedInterfaces();
  16. builder.RegisterAssemblyTypes(GetAssemblyByName("YiSha.Business")).Where(a => a.Name.EndsWith("BLL")).AsImplementedInterfaces();
  17. builder.RegisterAssemblyTypes(GetAssemblyByName("YiSha.Business.Cache")).Where(a => (a.Name.StartsWith("I") && a.Name.EndsWith("Business")) || (a.Name.EndsWith("Business")) || (a.Name.StartsWith("I") && a.Name.EndsWith("Service")) || (a.Name.EndsWith("Service"))).AsImplementedInterfaces();
  18. builder.RegisterAssemblyTypes(GetAssemblyByName("YiSha.Business.AutoJob")).Where(a => (a.Name.StartsWith("I") && a.Name.EndsWith("Business")) || (a.Name.EndsWith("Business")) || (a.Name.StartsWith("I") && a.Name.EndsWith("Service")) || (a.Name.EndsWith("Service"))).AsImplementedInterfaces();
  19. }
  20. /// <summary>
  21. /// 根据程序集名称获取程序集
  22. /// </summary>
  23. /// <param name="AssemblyName">程序集名称</param>
  24. /// <returns></returns>
  25. public static Assembly GetAssemblyByName(String AssemblyName)
  26. {
  27. return Assembly.Load(AssemblyName);
  28. }
  29. }
  30. }