using Admin.Core.Repository; using Autofac; using System.Linq; using System.Reflection; using Module = Autofac.Module; namespace Admin.Core.RegisterModules { public class RepositoryModule : Module { private readonly string _assemblyName; private readonly string _suffixName; /// /// 仓储注入 /// /// 程序集名称 /// 后缀名 public RepositoryModule(string assemblyName = "Admin.Core.Repository", string suffixName = "Repository") { _assemblyName = assemblyName; _suffixName = suffixName; } protected override void Load(ContainerBuilder builder) { //仓储 var assemblyRepository = Assembly.Load(_assemblyName); builder.RegisterAssemblyTypes(assemblyRepository) .Where(a => a.Name.EndsWith(_suffixName)) .AsImplementedInterfaces() .InstancePerLifetimeScope() .PropertiesAutowired();// 属性注入 //泛型注入 builder.RegisterGeneric(typeof(RepositoryBase<>)).As(typeof(IRepositoryBase<>)).InstancePerLifetimeScope(); builder.RegisterGeneric(typeof(RepositoryBase<,>)).As(typeof(IRepositoryBase<,>)).InstancePerLifetimeScope(); } } }