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);
        }
Esempio n. 2
0
        public IObjectProvider CreateScope()
        {
            var objectProvider = new AutofacObjectProvider(this);
            var childScope     = Scope.BeginLifetimeScope(builder =>
            {
                builder.RegisterInstance <IObjectProvider>(objectProvider);
            });

            objectProvider.SetLifetimeScope(childScope);
            return(objectProvider);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 public AutofacObjectProvider(ILifetimeScope scope, AutofacObjectProvider parent = null)
     : this(parent)
 {
     SetLifetimeScope(scope);
 }
Esempio n. 5
0
 internal AutofacObjectProvider(AutofacObjectProvider parent = null)
 {
     Parent = parent;
 }