忽略
This commit is contained in:
@@ -1,61 +1,61 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Autofac;
|
||||
using Autofac.Extensions.DependencyInjection;
|
||||
using Hncore.Infrastructure.IOC;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using Hncore.Infrastructure.EF;
|
||||
|
||||
namespace Hncore.Infrastructure.Autofac
|
||||
{
|
||||
public class MvcAutoRegister
|
||||
{
|
||||
public IServiceProvider Build(IServiceCollection services, IMvcBuilder mvcBuilder,
|
||||
Action<ContainerBuilder> action = null)
|
||||
{
|
||||
mvcBuilder.AddControllersAsServices();
|
||||
|
||||
var builder = new ContainerBuilder();
|
||||
|
||||
var assemblys = AppDomain.CurrentDomain.GetAssemblies().ToArray();
|
||||
|
||||
var perRequestType = typeof(IPerRequest);
|
||||
builder.RegisterAssemblyTypes(assemblys)
|
||||
.Where(t => perRequestType.IsAssignableFrom(t) && t != perRequestType)
|
||||
.PropertiesAutowired()
|
||||
.AsImplementedInterfaces()
|
||||
.InstancePerLifetimeScope();
|
||||
|
||||
var perDependencyType = typeof(IDependency);
|
||||
builder.RegisterAssemblyTypes(assemblys)
|
||||
.Where(t => perDependencyType.IsAssignableFrom(t) && t != perDependencyType)
|
||||
.PropertiesAutowired()
|
||||
.AsImplementedInterfaces()
|
||||
.InstancePerDependency();
|
||||
|
||||
var singleInstanceType = typeof(ISingleInstance);
|
||||
builder.RegisterAssemblyTypes(assemblys)
|
||||
.Where(t => singleInstanceType.IsAssignableFrom(t) && t != singleInstanceType)
|
||||
.PropertiesAutowired()
|
||||
.AsImplementedInterfaces()
|
||||
.SingleInstance();
|
||||
|
||||
builder.RegisterGeneric(typeof(QueryBase<,>)).As(typeof(IQuery<,>)).PropertiesAutowired()
|
||||
.InstancePerLifetimeScope();
|
||||
|
||||
builder.RegisterGeneric(typeof(RepositoryBase<,>)).As(typeof(IRepository<,>)).PropertiesAutowired()
|
||||
.InstancePerLifetimeScope();
|
||||
|
||||
action?.Invoke(builder);
|
||||
|
||||
builder.Populate(services);
|
||||
|
||||
var container = builder.Build();
|
||||
|
||||
var servicesProvider = new AutofacServiceProvider(container);
|
||||
|
||||
return servicesProvider;
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Autofac;
|
||||
using Autofac.Extensions.DependencyInjection;
|
||||
using Hncore.Infrastructure.IOC;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using Hncore.Infrastructure.EF;
|
||||
|
||||
namespace Hncore.Infrastructure.Autofac
|
||||
{
|
||||
public class MvcAutoRegister
|
||||
{
|
||||
public IServiceProvider Build(IServiceCollection services, IMvcBuilder mvcBuilder,
|
||||
Action<ContainerBuilder> action = null)
|
||||
{
|
||||
mvcBuilder.AddControllersAsServices();
|
||||
|
||||
var builder = new ContainerBuilder();
|
||||
|
||||
var assemblys = AppDomain.CurrentDomain.GetAssemblies().ToArray();
|
||||
|
||||
var perRequestType = typeof(IPerRequest);
|
||||
builder.RegisterAssemblyTypes(assemblys)
|
||||
.Where(t => perRequestType.IsAssignableFrom(t) && t != perRequestType)
|
||||
.PropertiesAutowired()
|
||||
.AsImplementedInterfaces()
|
||||
.InstancePerLifetimeScope();
|
||||
|
||||
var perDependencyType = typeof(IDependency);
|
||||
builder.RegisterAssemblyTypes(assemblys)
|
||||
.Where(t => perDependencyType.IsAssignableFrom(t) && t != perDependencyType)
|
||||
.PropertiesAutowired()
|
||||
.AsImplementedInterfaces()
|
||||
.InstancePerDependency();
|
||||
|
||||
var singleInstanceType = typeof(ISingleInstance);
|
||||
builder.RegisterAssemblyTypes(assemblys)
|
||||
.Where(t => singleInstanceType.IsAssignableFrom(t) && t != singleInstanceType)
|
||||
.PropertiesAutowired()
|
||||
.AsImplementedInterfaces()
|
||||
.SingleInstance();
|
||||
|
||||
builder.RegisterGeneric(typeof(QueryBase<,>)).As(typeof(IQuery<,>)).PropertiesAutowired()
|
||||
.InstancePerLifetimeScope();
|
||||
|
||||
builder.RegisterGeneric(typeof(RepositoryBase<,>)).As(typeof(IRepository<,>)).PropertiesAutowired()
|
||||
.InstancePerLifetimeScope();
|
||||
|
||||
action?.Invoke(builder);
|
||||
|
||||
builder.Populate(services);
|
||||
|
||||
var container = builder.Build();
|
||||
|
||||
var servicesProvider = new AutofacServiceProvider(container);
|
||||
|
||||
return servicesProvider;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user