对比新文件 |
| | |
| | | 锘縰sing Autofac; |
| | | using Autofac.Extras.DynamicProxy; |
| | | using log4net; |
| | | using Microsoft.Extensions.DependencyModel; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Reflection; |
| | | using System.Runtime.Loader; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.AOP; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Helper; |
| | | |
| | | namespace WIDESEA_Core.Extensions |
| | | { |
| | | public class AutofacModuleRegister : Autofac.Module |
| | | { |
| | | //private static readonly ILog log = LogManager.GetLogger(typeof(AutofacModuleRegister)); |
| | | protected override void Load(ContainerBuilder builder) |
| | | { |
| | | var cacheType = new List<Type>(); |
| | | |
| | | builder.RegisterType<LogAOP>(); |
| | | cacheType.Add(typeof(LogAOP)); |
| | | |
| | | builder.RegisterGeneric(typeof(RepositoryBase<>)).As(typeof(IRepository<>)).InstancePerDependency();//娉ㄥ唽浠撳偍 |
| | | builder.RegisterGeneric(typeof(ServiceBase<,>)).As(typeof(IService<>)).InstancePerDependency();//娉ㄥ唽鏈嶅姟 |
| | | |
| | | Type baseType = typeof(IDependency); |
| | | |
| | | List<RuntimeLibrary> compilationLibrary = DependencyContext.Default |
| | | .RuntimeLibraries |
| | | .Where(x => !x.Serviceable && x.Type == "project") |
| | | .ToList(); |
| | | |
| | | List<Assembly> assemblyList = new List<Assembly>(); |
| | | foreach (var library in compilationLibrary) |
| | | { |
| | | try |
| | | { |
| | | assemblyList.Add(AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(library.Name))); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine(library.Name + ex.Message); |
| | | } |
| | | } |
| | | |
| | | builder.RegisterAssemblyTypes(assemblyList.ToArray()).Where(x => !x.IsInterface && !x.IsAbstract && baseType.IsAssignableFrom(x)) |
| | | .AsImplementedInterfaces() |
| | | .PropertiesAutowired() |
| | | .InstancePerDependency() |
| | | .EnableInterfaceInterceptors() |
| | | .InterceptedBy(cacheType.ToArray()); |
| | | |
| | | |
| | | foreach (var assembly in assemblyList) |
| | | { |
| | | foreach (var type in assembly.GetTypes()) |
| | | { |
| | | if (!type.IsInterface && !type.IsAbstract && baseType.IsAssignableFrom(type)) |
| | | { |
| | | Console.WriteLine($"娉ㄥ唽绫诲瀷: {type.FullName}"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | builder.RegisterType<UnitOfWorkManage>().As<IUnitOfWorkManage>() |
| | | .AsImplementedInterfaces() |
| | | .InstancePerLifetimeScope() |
| | | .PropertiesAutowired(); |
| | | } |
| | | } |
| | | } |