public IObjectProvider Build(IServiceCollection serviceCollection = null) { if (serviceCollection != null) { Populate(serviceCollection); } _containerBuilder.Register <IObjectProvider>(context => { var serviceProvider = context.Resolve <IServiceProvider>() as AutofacServiceProvider; var componentContextField = typeof(AutofacServiceProvider).GetField("_lifetimeScope", BindingFlags.NonPublic | BindingFlags.Instance); if (componentContextField?.GetValue(serviceProvider) is ILifetimeScope lifetimeScope) { return(new AutofacObjectProvider(lifetimeScope)); } throw new Exception("Autofac ServiceProvider not exists!"); }) .InstancePerLifetimeScope(); var objectProvider = new AutofacObjectProvider(); objectProvider.SetLifetimeScope(_containerBuilder.Build()); return(objectProvider); }
public IObjectProvider CreateScope() { var objectProvider = new AutofacObjectProvider(this); var childScope = Scope.BeginLifetimeScope(builder => { builder.RegisterInstance <IObjectProvider>(objectProvider); }); objectProvider.SetLifetimeScope(childScope); return(objectProvider); }
public IObjectProvider CreateScope(IServiceCollection serviceCollection) { var objectProvider = new AutofacObjectProvider(this); var childScope = Scope.BeginLifetimeScope(builder => { builder.RegisterInstance <IObjectProvider>(objectProvider); builder.Populate(serviceCollection); }); objectProvider.SetLifetimeScope(childScope); return(objectProvider); }
public AutofacObjectProvider(ILifetimeScope scope, AutofacObjectProvider parent = null) : this(parent) { SetLifetimeScope(scope); }
internal AutofacObjectProvider(AutofacObjectProvider parent = null) { Parent = parent; }