From 4fa92d8a2bb207029564ff33c3faf84ea9b814ed Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期三, 19 三月 2025 17:05:52 +0800
Subject: [PATCH] 优化接口逻辑

---
 Tiger.Api/Autofac/AutoFacContianer.cs |   41 +++++++++++++++++++++++++++--------------
 1 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/Tiger.Api/Autofac/AutoFacContianer.cs b/Tiger.Api/Autofac/AutoFacContianer.cs
index c052f95..cdd8036 100644
--- a/Tiger.Api/Autofac/AutoFacContianer.cs
+++ b/Tiger.Api/Autofac/AutoFacContianer.cs
@@ -22,6 +22,7 @@
         /// 瀹瑰櫒
         /// </summary>
         public static IContainer Instance;
+        public static AppDomain AppDomain;
 
         /// <summary>
         /// 鍒濆鍖栧鍣�
@@ -39,28 +40,35 @@
         /// <param name="builder"></param>
         public static void Build(ContainerBuilder builder)
         {
-            var assembly = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory + "Tiger.Business.dll");
-            //娉ㄥ叆Tiger.Business.dll
-            builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces();
+            ////娉ㄥ叆Tiger.Business.dll
+            //var assembly = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory + "Tiger.Business.dll");
+            //builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces();
 
             #region 鍔ㄦ�佸姞杞藉涓猟ll
-            //string[] assemblyScanerPattern = new[] { @"MyModule.*.dll"};
+            string[] assemblyPattern = new[] { "Tiger.Business([.].*)*.dll" };
 
-            //// Make sure process paths are same...
-            //Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
+            //AppDomain = AppDomain.CreateDomain("AutoFac Dll");
+            //List<Assembly> assemblies = new List<Assembly>();
+            //foreach (var file in Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll", SearchOption.AllDirectories).Where(filename => assemblyPattern.Any(pattern => Regex.IsMatch(filename, pattern))))
+            //{
+            //    var assembly = AppDomain.Load(Assembly.LoadFrom(file).GetName());
+            //    assemblies.Add(assembly);
+            //}
 
-            //// 1. Scan for assemblies containing autofac modules in the bin folder
+            // 1. Scan for assemblies containing autofac modules in the bin folder
             //List<Assembly> assemblies = new List<Assembly>();
             //assemblies.AddRange(
-            //    Directory.EnumerateFiles(Directory.GetCurrentDirectory(), "*.dll", SearchOption.AllDirectories)
-            //             .Where(filename => assemblyScanerPattern.Any(pattern => Regex.IsMatch(filename, pattern)))
-            //             .Select(Assembly.LoadFrom)
+            //    Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll", SearchOption.AllDirectories)
+            //                  .Where(filename => assemblyPattern.Any(pattern => Regex.IsMatch(filename, pattern)))
+            //                  .Select(Assembly.LoadFrom)
             //);
 
-            //foreach (var assembly in assemblies)
-            //{
-            //    builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces();
-            //}
+
+            var assemblies = PluginManager.Load(AppDomain.CurrentDomain.BaseDirectory, "Tiger.Business([.].*)*.dll");
+            foreach (var assembly in assemblies)
+            {
+                builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces();
+            }
             #endregion
 
             //璇诲彇閰嶇疆鏂囦欢,鎶婇厤缃叧绯昏杞藉埌ContainerBuilder
@@ -99,5 +107,10 @@
         {
             return AutoFacContainer.Instance.Resolve<T>();
         }
+
+        public static dynamic Resolve(string typeFullName)
+        {
+            return AutoFacContainer.Instance.Resolve(System.Type.GetType(typeFullName, true));
+        }
     }
 }

--
Gitblit v1.9.3