using Autofac; using System.Reflection; namespace QYZH.InteractiveMagazine.Infrastructure.Autofacs { public class AutofacModuleRegister : Autofac.Module { private readonly string _assemblyName; public AutofacModuleRegister(string assemblyNames) { _assemblyName = assemblyNames; } /// /// 加在程序集 /// /// protected override void Load(ContainerBuilder builder) { //注册Repository(只注册接口,遵循依赖倒置原则) builder.RegisterAssemblyTypes(GetAssemblyByName($"{_assemblyName}.Repository")) .Where(t => t.Name.EndsWith("Repository") && !t.IsAbstract) .AsImplementedInterfaces() .InstancePerLifetimeScope(); //注册Service builder.RegisterAssemblyTypes(GetAssemblyByName($"{_assemblyName}.Service")) .Where(t => t.Name.EndsWith("Service") && !t.IsAbstract) .AsImplementedInterfaces() .InstancePerLifetimeScope(); } /// /// 根据程序集名称获取程序集 /// /// 程序集名称 public static Assembly GetAssemblyByName(string AssemblyName) { return Assembly.Load(AssemblyName); } } }