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