StructureMap.Pipeline.LifecycleObjectCache.Get C# (CSharp) Method

Get() public method

public Get ( Type pluginType, StructureMap.Pipeline.Instance instance, IBuildSession session ) : object
pluginType System.Type
instance StructureMap.Pipeline.Instance
session IBuildSession
return object
        public object Get(Type pluginType, Instance instance, IBuildSession session)
        {
            object result = null;
            int key = instance.InstanceKey(pluginType);
            _lock.EnterUpgradeableReadLock();
            if (_objects.ContainsKey(key))
            {

                result = _objects[key];
                _lock.ExitUpgradeableReadLock();
            }
            else
            {
                _lock.EnterWriteLock();
                try
                {
                    result = buildWithSession(pluginType, instance, session);
                    _objects.Add(key, result);
                }
                finally
                {
                    _lock.ExitWriteLock();
                }
            }

            return result;
        }