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