This commit is contained in:
“wanyongkang”
2020-12-28 14:55:48 +08:00
parent c2ec7392cb
commit 40a40b6d36
305 changed files with 20629 additions and 20629 deletions

View File

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