服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2025-04-21 531f16f2f15bf792e3e719e00abb57a95356dedd
Tiger.Api/Autofac/AutoFacContianer.cs
@@ -22,6 +22,7 @@
        /// 容器
        /// </summary>
        public static IContainer Instance;
        public static AppDomain AppDomain;
        /// <summary>
        /// 初始化容器
@@ -46,14 +47,24 @@
            #region 动态加载多个dll
            string[] assemblyPattern = new[] { "Tiger.Business([.].*)*.dll" };
            // 1. Scan for assemblies containing autofac modules in the bin folder
            List<Assembly> assemblies = new List<Assembly>();
            assemblies.AddRange(
                Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll", SearchOption.AllDirectories)
                              .Where(filename => assemblyPattern.Any(pattern => Regex.IsMatch(filename, pattern)))
                              .Select(Assembly.LoadFrom)
            );
            //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
            //List<Assembly> assemblies = new List<Assembly>();
            //assemblies.AddRange(
            //    Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll", SearchOption.AllDirectories)
            //                  .Where(filename => assemblyPattern.Any(pattern => Regex.IsMatch(filename, pattern)))
            //                  .Select(Assembly.LoadFrom)
            //);
            var assemblies = PluginManager.Load(AppDomain.CurrentDomain.BaseDirectory, "Tiger.Business([.].*)*.dll");
            foreach (var assembly in assemblies)
            {
                builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces();
@@ -96,5 +107,10 @@
        {
            return AutoFacContainer.Instance.Resolve<T>();
        }
        public static dynamic Resolve(string typeFullName)
        {
            return AutoFacContainer.Instance.Resolve(System.Type.GetType(typeFullName, true));
        }
    }
}