using Microsoft.Extensions.DependencyInjection; using System; using zero.Core; using zero.Web.Mapper; namespace zero.Web { public static class MapperServiceCollectionExtensions { public static IServiceCollection AddMapper(this IServiceCollection services) where T : class, IMapper, new() { return services.AddSingleton(); } public static IServiceCollection AddMapper(this IServiceCollection services, Action options) where T : class, IMapper, new() { return services.AddSingleton(factory => { T mapper = new T(); options(mapper); return mapper; }); } public static IServiceCollection AddMapper(this IServiceCollection services) => services.AddMapper(); public static IServiceCollection AddMapper(this IServiceCollection services, Action options) => services.AddMapper(options); } }