Example #1
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);
            }
Example #2
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);
            }
Example #3
0
        private object GetPooledObject(RegistrationKey pooledObjectKey)
        {
            object obj;

            if (objectPool.TryGetValue(pooledObjectKey, out obj))
            {
                return(obj);
            }

            if (baseContainer != null)
            {
                return(baseContainer.GetPooledObject(pooledObjectKey));
            }

            return(null);
        }
Example #4
0
        private object GetPooledObject(Type registeredType)
        {
            object obj;

            if (objectPool.TryGetValue(registeredType, out obj))
            {
                return(obj);
            }

            if (baseContainer != null)
            {
                return(baseContainer.GetPooledObject(registeredType));
            }

            return(null);
        }
Example #5
0
            public object Resolve(ObjectContainer container, RegistrationKey keyToResolve, IEnumerable <Type> resolutionPath)
            {
                object obj = container.GetPooledObject(ImplementationType);

                if (obj == null)
                {
                    if (ImplementationType.IsInterface)
                    {
                        throw new ObjectContainerException("Interface cannot be resolved: " + keyToResolve, resolutionPath);
                    }

                    obj = container.CreateObject(ImplementationType, resolutionPath);
                    container.objectPool.Add(ImplementationType, obj);
                }

                return(obj);
            }
Example #6
0
            public object Resolve(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath)
            {
                var    pooledObjectKey = new RegistrationKey(implementationType, keyToResolve.Name);
                object obj             = container.GetPooledObject(pooledObjectKey);

                if (obj == null)
                {
                    if (implementationType.IsInterface)
                    {
                        throw new ObjectContainerException("Interface cannot be resolved: " + keyToResolve, resolutionPath);
                    }

                    obj = container.CreateObject(implementationType, resolutionPath, keyToResolve);
                    container.objectPool.Add(pooledObjectKey, obj);
                }

                return(obj);
            }
Example #7
0
            protected override object ResolvePerContext(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath)
            {
                var typeToConstruct = GetTypeToConstruct(keyToResolve);

                var    pooledObjectKey = new RegistrationKey(typeToConstruct, keyToResolve.Name);
                object obj             = container.GetPooledObject(pooledObjectKey);

                if (obj == null)
                {
                    if (typeToConstruct.IsInterface)
                    {
                        throw new ObjectContainerException("Interface cannot be resolved: " + keyToResolve, resolutionPath.ToTypeList());
                    }

                    obj = container.CreateObject(typeToConstruct, resolutionPath, keyToResolve);
                    container.objectPool.Add(pooledObjectKey, obj);
                }

                return(obj);
            }
Example #8
0
            protected override object ResolvePerContext(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath)
            {
                var typeToConstruct = GetTypeToConstruct(keyToResolve);

                var pooledObjectKey = new RegistrationKey(typeToConstruct, keyToResolve.Name);

                var result = ExecuteWithLock(syncRoot, () => container.GetPooledObject(pooledObjectKey), () =>
                {
                    if (typeToConstruct.IsInterface)
                    {
                        throw new ObjectContainerException("Interface cannot be resolved: " + keyToResolve,
                                                           resolutionPath.ToTypeList());
                    }

                    var obj = container.CreateObject(typeToConstruct, resolutionPath, keyToResolve);
                    container.objectPool.Add(pooledObjectKey, obj);
                    return(obj);
                }, resolutionPath);

                return(result);
            }