Пример #1
0
            public object Resolve(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath)
            {
                //TODO: store result object in pool?
                var obj = container.InvokeFactoryDelegate(factoryDelegate, resolutionPath, keyToResolve);

                return(obj);
            }
Пример #2
0
            protected override object ResolvePerContext(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath)
            {
                var obj = container.GetPooledObject(keyToResolve);

                if (obj == null)
                {
                    obj = container.InvokeFactoryDelegate(factoryDelegate, resolutionPath, keyToResolve);
                    container.objectPool.Add(keyToResolve, obj);
                }
                return(obj);
            }
Пример #3
0
            protected override object ResolvePerContext(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath)
            {
                var result = ExecuteWithLock(syncRoot, () => container.GetPooledObject(keyToResolve), () =>
                {
                    var obj = container.InvokeFactoryDelegate(factoryDelegate, resolutionPath, keyToResolve);
                    container.objectPool.Add(keyToResolve, obj);
                    return(obj);
                }, resolutionPath);

                return(result);
            }
Пример #4
0
            public object Resolve(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath)
            {
                var obj       = container.InvokeFactoryDelegate(factoryDelegate, resolutionPath, keyToResolve);
                var objectKey = new RegistrationKey(obj.GetType(), keyToResolve.Name);

                if (dispose)
                {
                    container.objectPool.Add(objectKey, obj);
                }
                return(obj);
            }
Пример #5
0
            public object Resolve(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath)
            {
                var obj = container.InvokeFactoryDelegate(factoryDelegate, resolutionPath, keyToResolve);

                if (dispose && obj is IDisposable && !container.disposableFactoryObjects.Contains(obj))
                {
                    container.disposableFactoryObjects.Add(obj as IDisposable);
                }

                return(obj);
            }
Пример #6
0
 protected override object ResolvePerDependency(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath)
 {
     return(container.InvokeFactoryDelegate(factoryDelegate, resolutionPath, keyToResolve));
 }