using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using Autofac; using Autofac.Extensions.DependencyInjection; using iPackage.Core.Web.Repositories; using iPackage.Core.Web.Services; using iPackage.Core.Web.Services.Contracts; using iPackage.Models.Service; using iPackage.Services; using iPackage.Services.Contracts; using Microsoft.Extensions.DependencyInjection; namespace iPackage.Core.Web.Extensions { public static class AutoFacConfigExtensions { public static IServiceProvider AddAutoFacContainer( this IServiceCollection serviceCollection, params Assembly[] projectAssembly) { var containerBuilder = new ContainerBuilder(); containerBuilder.Populate(serviceCollection); var assembly = projectAssembly; containerBuilder.RegisterAssemblyTypes(assembly) .AssignableTo() .AsImplementedInterfaces() .InstancePerLifetimeScope(); var container = containerBuilder.Build(); return new AutofacServiceProvider(container); } } public static class AutoFacConfigServerExtensions { public static IServiceProvider AddAutoFacServerContainer(this IServiceCollection serviceCollection, params Assembly[] projectAssembly) { var list = projectAssembly.ToList(); list.Add(typeof(IRepositoryWrapper).Assembly); list.Add(typeof(IDbService).Assembly); list.Add(typeof(IImageService).Assembly); return serviceCollection.AddAutoFacContainer(list.ToArray()); } } }