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;
}
}
}