From 966d1fe6077c885db064fcea98bb48cbccb464d6 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期一, 14 十月 2024 17:23:02 +0800 Subject: [PATCH] WCS --- 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs | 78 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 78 insertions(+), 0 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs" new file mode 100644 index 0000000..370e2d5 --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs" @@ -0,0 +1,78 @@ +锘縰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(); + } + } +} -- Gitblit v1.9.3