diff --git a/README.md b/README.md index 640d539642d92cecbd93c90fc8c8f028752c421f..d9974447bb6e8972fe4b51b030369089fea98977 100644 --- a/README.md +++ b/README.md @@ -37,8 +37,11 @@ app.Run(); // 如果没有取消自动注入的话,您只需要在实现类继承相应的接口即可 // 接口的名字和实现类型的名字必须基本一致,接口多加I其他的名字必须一致 + IScopedDependency => services.AddScoped(); + ISingletonDependency => service.AddSingleton(); + ITransientDependency => service.AddTransient(); ### 示例 diff --git a/src/Token.Module/Extensions/ServiceCollectionApplicationExtensions.cs b/src/Token.Module/Extensions/ServiceCollectionApplicationExtensions.cs index 1d9050cdb564d249615e3f55747275d7f341f8d4..f5678ac211599afaac7082446df5e2d5452e80da 100644 --- a/src/Token.Module/Extensions/ServiceCollectionApplicationExtensions.cs +++ b/src/Token.Module/Extensions/ServiceCollectionApplicationExtensions.cs @@ -1,9 +1,9 @@ using System.Linq; using System.Reflection; using Microsoft.Extensions.DependencyInjection; -using Microsoft.AspNetCore.Builder; using System.Threading.Tasks; using System.Collections.Generic; +using Microsoft.AspNetCore.Builder; using Token.Module.Attributes; namespace Token.Module.Extensions; diff --git a/src/Token.Module/Extensions/TokenApplicationExtensions.cs b/src/Token.Module/Extensions/TokenApplicationExtensions.cs new file mode 100644 index 0000000000000000000000000000000000000000..772c80df4d16054712b79c3b0c0df603234f6231 --- /dev/null +++ b/src/Token.Module/Extensions/TokenApplicationExtensions.cs @@ -0,0 +1,18 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace Token.Module.Extensions; + +public static class TokenApplicationExtensions +{ + public static TService? GetService(this IApplicationBuilder app) => + app.ApplicationServices.GetService(); + + public static IConfiguration? GetConfiguration(this IApplicationBuilder app) => + app.ApplicationServices.GetService(); + + public static ILoggerFactory? GetLoggerFactory(this IApplicationBuilder app) => + app.ApplicationServices.GetService(); +} \ No newline at end of file diff --git a/src/Token.Module/Extensions/TokenServiceExtensions.cs b/src/Token.Module/Extensions/TokenServiceExtensions.cs new file mode 100644 index 0000000000000000000000000000000000000000..d96e24cde23c7346dc3ac36467c3e962fddfdf9d --- /dev/null +++ b/src/Token.Module/Extensions/TokenServiceExtensions.cs @@ -0,0 +1,17 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; + +namespace Token.Module.Extensions; + +public static class TokenServiceExtensions +{ + public static TService? GetService(this IServiceCollection services) => + services.BuildServiceProvider().GetService(); + + public static IConfiguration? GetConfiguration(this IServiceCollection services) => + services.BuildServiceProvider().GetService(); + + public static ILoggerFactory? GetLoggerFactory(IServiceCollection services) => + services.BuildServiceProvider().GetService(); +} \ No newline at end of file diff --git a/src/Token.Module/ITokenModule.cs b/src/Token.Module/ITokenModule.cs index 6c4067037299455203211c4377909760aaa63c44..d817be1eefc4c5a53902f4e064ca7d63b21a61a1 100644 --- a/src/Token.Module/ITokenModule.cs +++ b/src/Token.Module/ITokenModule.cs @@ -6,11 +6,11 @@ namespace Token.Module; public interface ITokenModule { - Task ConfigureServicesAsync(IServiceCollection context); + Task ConfigureServicesAsync(IServiceCollection services); - void ConfigureServices(IServiceCollection context); + void ConfigureServices(IServiceCollection services); - Task OnApplicationShutdownAsync(IApplicationBuilder context); + Task OnApplicationShutdownAsync(IApplicationBuilder app); - void OnApplicationShutdown(IApplicationBuilder context); + void OnApplicationShutdown(IApplicationBuilder app); } \ No newline at end of file diff --git a/src/Token.Module/Token.Module.csproj b/src/Token.Module/Token.Module.csproj index 815a3f2902e80b61e8119a330be311873f33b11f..3714e76cdae1ea4dac7b75713d63d46061ad41e5 100644 --- a/src/Token.Module/Token.Module.csproj +++ b/src/Token.Module/Token.Module.csproj @@ -1,7 +1,7 @@ - netstandard2.1 + net6.0 enable 10 模块注入,模块引用 @@ -10,15 +10,19 @@ true https://github.com/239573049/token-module https://github.com/239573049/token-module - 增加主动依赖注入自动化, - + 修复Configure无法问题 logo.png - 1.1.0 + 1.1.7 - - + + + + + + + diff --git a/src/Token.Module/TokenModule.cs b/src/Token.Module/TokenModule.cs index 7de5cc00385357a800fd09e0699cee2ec0dc1314..1e1df13f363a09275850913fab07ee591d6852b9 100644 --- a/src/Token.Module/TokenModule.cs +++ b/src/Token.Module/TokenModule.cs @@ -1,13 +1,17 @@ using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.AspNetCore.Builder; +using System; namespace Token.Module; -public abstract class TokenModule:ITokenModule +public abstract class TokenModule : ITokenModule { + private IServiceCollection _serviceCollection; + public virtual Task ConfigureServicesAsync(IServiceCollection services) { + _serviceCollection = services; ConfigureServices(services); return Task.CompletedTask; } @@ -25,4 +29,10 @@ public abstract class TokenModule:ITokenModule public virtual void OnApplicationShutdown(IApplicationBuilder app) { } + + protected void Configure(Action configureOptions) where TOptions : class => + _serviceCollection.Configure(configureOptions); + + protected void Configure(string name, Action configureOptions) where TOptions : class => + _serviceCollection.Configure(name, configureOptions); } \ No newline at end of file diff --git a/test/NetCore.HttpApi/Modules/TokenOptions.cs b/test/NetCore.HttpApi/Modules/TokenOptions.cs new file mode 100644 index 0000000000000000000000000000000000000000..77e9d3d673b04ed898831c60a64c72f1f2e41d56 --- /dev/null +++ b/test/NetCore.HttpApi/Modules/TokenOptions.cs @@ -0,0 +1,8 @@ +namespace NetCore.HttpApi.Modules; + +public class TokenOptions +{ + public const string Name = "Token"; + + +} \ No newline at end of file diff --git a/test/NetCoreTest/NetCoreTestModule.cs b/test/NetCoreTest/NetCoreTestModule.cs index ff350211f1ee470d45f3b9ad17ce3ed76ea0063b..a5496ba2d9f981142d2f6e1ded3e4808c909f893 100644 --- a/test/NetCoreTest/NetCoreTestModule.cs +++ b/test/NetCoreTest/NetCoreTestModule.cs @@ -12,7 +12,6 @@ public class NetCoreTestModule :TokenModule { public override void ConfigureServices(IServiceCollection services) { - } public override void OnApplicationShutdown(IApplicationBuilder app)