//using JiShe.CollectBus.Common.Extensions.DependencyInjections; //using System.Reflection; //using JiShe.CollectBus.Common.Abstractions; //using Microsoft.Extensions.Hosting; //using System; //using Microsoft.Extensions.Configuration; //using Serilog; //// ReSharper disable once CheckNamespace //namespace Microsoft.Extensions.DependencyInjection //{ // public static class DependencyInjectionExtensions // { // public static IServiceCollection ModuleRegister(this IServiceCollection services, IConfiguration configuration) // { // var assemblies = GetBinAssemblies(); // foreach (var assembly in assemblies) // { // var allTypes = assembly.GetTypes(); // foreach (var type in allTypes) // { // if (typeof(IJiSheModule).IsAssignableFrom(type) && type is { IsClass: true, IsAbstract: false }) // { // Log.Logger.Information($"正在加载模块{type.Name}..."); // var instance = Activator.CreateInstance(type); // _ = (type.GetMethod("ConfigureServices")?.Invoke(instance, [services, configuration])); // } // } // } // return services; // } // public static IServiceCollection ServiceRegister(this IServiceCollection services) // { // var assemblies = GetBinAssemblies(); // foreach (var assembly in assemblies) // { // var allTypes = assembly.GetTypes(); // foreach (var type in allTypes) // { // if (type is not { IsClass: true, IsAbstract: false }) continue; // if (typeof(ISingletonDependency).IsAssignableFrom(type)) // { // var interfaceTypes = type.GetInterfaces().Where(p => p.FullName != null && !p.FullName.Contains("ISingletonDependency") && !p.FullName.Contains("IDisposable")); // foreach (var interfaceType in interfaceTypes) // { // Log.Logger.Information($"正在IOC注入ISingletonDependency {type.Name}..."); // services.AddSingleton(interfaceType, type); // } // } // if (typeof(ITransientDependency).IsAssignableFrom(type)) // { // var interfaceTypes = type.GetInterfaces().Where(p => p.FullName != null && !p.FullName.Contains("ITransientDependency") && !p.FullName.Contains("IDisposable")); // foreach (var interfaceType in interfaceTypes) // { // Log.Logger.Information($"正在IOC注入ITransientDependency {type.Name}..."); // services.AddTransient(interfaceType, type); // } // } // if (typeof(IScopedDependency).IsAssignableFrom(type)) // { // var interfaceTypes = type.GetInterfaces().Where(p => p.FullName != null && !p.FullName.Contains("IScopedDependency") && !p.FullName.Contains("IDisposable")); // foreach (var interfaceType in interfaceTypes) // { // Log.Logger.Information($"正在IOC注入IScopedDependency {type.Name}..."); // services.AddScoped(interfaceType, type); // } // } // } // } // return services; // } // private static IEnumerable GetBinAssemblies() // { // var directory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); // if (!directory.Exists) return []; // var files = directory.GetFiles("JiShe.CollectBus.*.dll"); // var assemblies = new List(); // foreach (var file in files) // { // try // { // var assembly = Assembly.LoadFrom(file.FullName); // assemblies.Add(assembly); // } // catch (Exception ex) // { // Console.WriteLine($"Error loading assembly from {file.FullName}: {ex.Message}"); // } // } // return assemblies; // } // } //}