diff --git a/src/Token.Module/Extensions/DependencyExtensions.cs b/src/Token.Module/Extensions/DependencyExtensions.cs index 95ad787bac9951ddcc2a3038bb614f79ab6c2d4a..12d00822f9694b07fcaef53cfa0ac7801a929dcd 100644 --- a/src/Token.Module/Extensions/DependencyExtensions.cs +++ b/src/Token.Module/Extensions/DependencyExtensions.cs @@ -24,30 +24,30 @@ public static class DependencyExtensions if (interfaces != null) { - if (typeof(ITransientDependency).IsAssignableFrom(t)) + if (t.IsAssignableFrom()) { services.AddTransient(interfaces, t); } - else if (typeof(IScopedDependency).IsAssignableFrom(t)) + else if (t.IsAssignableFrom()) { services.AddScoped(interfaces, t); } - else if (typeof(ISingletonDependency).IsAssignableFrom(t)) + else if (t.IsAssignableFrom()) { services.AddSingleton(interfaces, t); } } else { - if (typeof(ITransientDependency).IsAssignableFrom(t)) + if (t.IsAssignableFrom()) { services.AddTransient(t); } - else if (typeof(IScopedDependency).IsAssignableFrom(t)) + else if (t.IsAssignableFrom()) { services.AddScoped(t); } - else if (typeof(ISingletonDependency).IsAssignableFrom(t)) + else if (t.IsAssignableFrom()) { services.AddSingleton(t); } diff --git a/src/Token.Module/Extensions/InterfaceExtensions.cs b/src/Token.Module/Extensions/InterfaceExtensions.cs new file mode 100644 index 0000000000000000000000000000000000000000..348c6d00a2fcb18b0805e0a2e6f1572fb49b4dca --- /dev/null +++ b/src/Token.Module/Extensions/InterfaceExtensions.cs @@ -0,0 +1,9 @@ +using System; + +namespace Token.Module.Extensions; + +public static class InterfaceExtensions +{ + public static bool IsAssignableFrom(this Type t) => + typeof(T).IsAssignableFrom(t); +} \ No newline at end of file diff --git a/src/Token.Module/Extensions/ServiceCollectionApplicationExtensions.cs b/src/Token.Module/Extensions/ServiceCollectionApplicationExtensions.cs index 0b1e5c9963c583930021051ce70f8506c098ca81..e45da148db0955aef1d47d60299b5bdf3b2c246e 100644 --- a/src/Token.Module/Extensions/ServiceCollectionApplicationExtensions.cs +++ b/src/Token.Module/Extensions/ServiceCollectionApplicationExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using System.Reflection; using Microsoft.Extensions.DependencyInjection; @@ -74,8 +74,7 @@ public static class ServiceCollectionApplicationExtensions private static async Task GetModuleTypeAsync(Type type, ICollection> types) { - var iTokenModule = typeof(ITokenModule); - if (!iTokenModule.IsAssignableFrom(type)) + if (!type.IsAssignableFrom()) { return; } @@ -87,7 +86,8 @@ public static class ServiceCollectionApplicationExtensions // 获取DependOn特性注入的模块 var attributes = type.GetCustomAttributes().OfType() - .SelectMany(x => x.Type).Where(x => iTokenModule.IsAssignableFrom(x)); + .SelectMany(x => x.Type).Where(x=>x.IsAssignableFrom()); + foreach (var t in attributes) { diff --git a/src/Token.Module/TokenModule.cs b/src/Token.Module/TokenModule.cs index 7248950bbd314ca82af646f5cc75c6cd4f7116c9..37ba755673560aa057f25f5523c8d8a0799beb27 100644 --- a/src/Token.Module/TokenModule.cs +++ b/src/Token.Module/TokenModule.cs @@ -11,7 +11,7 @@ public abstract class TokenModule : ITokenModule public virtual Task ConfigureServicesAsync(IServiceCollection services) { - _serviceCollection = services; + _serviceCollection = services ?? throw new ArgumentNullException(nameof(services)); ConfigureServices(services); return Task.CompletedTask; }