48 lines
1.7 KiB
C#
48 lines
1.7 KiB
C#
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<IScopedDependency>()
|
|
.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());
|
|
}
|
|
}
|
|
}
|