示例#1
0
        private QuickInjectContainer(QuickInjectContainer parent)
        {
            this.Registering           += (sender, args) => { };
            this.RegisteringInstance   += (sender, args) => { };
            this.ChildContainerCreated += (sender, args) => { };

            this.parentContainer = parent ?? throw new ArgumentNullException(nameof(parent));
            this.extensionImpl   = this.parentContainer.extensionImpl;

            this.perfectHashProvider = this.parentContainer.perfectHashProvider;
            this.perfectHashProvider.AddContainer(this);

            this.compilationMonitor = this.parentContainer.compilationMonitor;
            this.resolutionMonitor  = this.parentContainer.resolutionMonitor;

            this.RegisterInstance(IQuickInjectContainerType, this);
        }
示例#2
0
        public QuickInjectContainer(ICompilationMonitor compilationMonitor, IResolutionMonitor resolutionMonitor)
        {
            this.compilationMonitor = compilationMonitor;
            this.resolutionMonitor  = resolutionMonitor;

            // Lifetime managers is empty at QuickInject start (across the entire program, not just the instance)
            lock (StaticLock)
            {
                if (lifetimeManagers.Empty)
                {
                    lifetimeManagers.Add(TransientLifetimeManager.Default);
                    constants.Add(resolutionMonitor);
                }
            }

            compileMethodPointer = CompileMethodInfo.MethodHandle.GetFunctionPointer();
            this.InitializeContainer();
        }