public object Resolve(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath) { //TODO: store result object in pool? var obj = container.InvokeFactoryDelegate(factoryDelegate, resolutionPath, keyToResolve); return(obj); }
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); }
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); }
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); }
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); }
protected override object ResolvePerDependency(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath) { return(container.InvokeFactoryDelegate(factoryDelegate, resolutionPath, keyToResolve)); }