using KestrelApp.Middleware.Redis; using Microsoft.Extensions.DependencyInjection.Extensions; using System; using System.Linq; namespace Microsoft.Extensions.DependencyInjection { /// /// ServiceCollection扩展 /// public static partial class ServiceCollectionExtensions { /// /// 添加Redis /// /// /// /// public static IServiceCollection AddRedis(this IServiceCollection services, Action configureOptions) { return services.AddRedis().Configure(configureOptions); } /// /// 添加Redis /// /// /// public static IServiceCollection AddRedis(this IServiceCollection services) { var serviceType = typeof(IRedisCmdHanler); var cmdHandlerTypes = serviceType.Assembly.GetTypes() .Where(item => serviceType.IsAssignableFrom(item)) .Where(item => item.IsClass && item.IsAbstract == false); foreach (var implementationType in cmdHandlerTypes) { var descriptor = ServiceDescriptor.Singleton(serviceType, implementationType); services.TryAddEnumerable(descriptor); } services.TryAddSingleton(); return services; } } }