diff --git a/API/Wood.Admin.WebApi/Startup.cs b/API/Wood.Admin.WebApi/Startup.cs index 6fd6654..03a0a5d 100644 --- a/API/Wood.Admin.WebApi/Startup.cs +++ b/API/Wood.Admin.WebApi/Startup.cs @@ -400,10 +400,10 @@ namespace Wood.Admin.WebApi #endregion }); - services.AddControllers(); - var s = services.BuildServiceProvider().GetRequiredService(); + //services.AddControllers(); + //var s = services.BuildServiceProvider().GetRequiredService(); - s.TaskAllAsync("2025-05-29"); + //s.TaskAllAsync("2025-05-29"); diff --git a/API/Wood.Service/Controllers/RegistService/ServiceRegister.cs b/API/Wood.Service/Controllers/RegistService/ServiceRegister.cs new file mode 100644 index 0000000..4478e61 --- /dev/null +++ b/API/Wood.Service/Controllers/RegistService/ServiceRegister.cs @@ -0,0 +1,48 @@ +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace Wood.Service.Controllers.RegistService +{ + public static class ServiceCollectionExtensions + { + // 批量注册接口及其实现类(接口以I开头,实现类与接口同名去掉I) + public static IServiceCollection AddServicesByConvention(this IServiceCollection services, Assembly assembly) + { + var implementationTypes = assembly.GetTypes() + .Where(t => t.IsClass && !t.IsAbstract && !t.IsGenericType); + + foreach (var implementationType in implementationTypes) + { + var interfaces = implementationType.GetInterfaces() + .Where(i => i.Name == "I" + implementationType.Name); + + foreach (var @interface in interfaces) + { + services.AddScoped(@interface, implementationType); + } + } + + return services; + } + + // 批量注册特定接口的所有实现类 + public static IServiceCollection AddImplementationsOf(this IServiceCollection services, Assembly assembly, ServiceLifetime lifetime = ServiceLifetime.Scoped) + { + var interfaceType = typeof(TInterface); + var implementationTypes = assembly.GetTypes() + .Where(t => !t.IsInterface && !t.IsAbstract && interfaceType.IsAssignableFrom(t)); + + foreach (var implementationType in implementationTypes) + { + services.Add(new ServiceDescriptor(interfaceType, implementationType, lifetime)); + } + + return services; + } + } +} diff --git a/API/Wood.Service/Controllers/TaskConifgureController.cs b/API/Wood.Service/Controllers/TaskConifgureController.cs index bc3f779..43d2ab1 100644 --- a/API/Wood.Service/Controllers/TaskConifgureController.cs +++ b/API/Wood.Service/Controllers/TaskConifgureController.cs @@ -68,9 +68,10 @@ namespace TaskManager.Controllers var first = await _context.TaskConifgure.FirstOrDefaultAsync(p => p.TaskName == taskName); var url = first.Url; var path = first.Api; + var client = first.Module; var controller = _builder.GetRequiredService(); - await controller.ExecuteAsync(url, path, taskName); + await controller.ExecuteAsync(url, path, taskName,client); }