protected override object ResolvePerDependency(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath) { var typeToConstruct = GetTypeToConstruct(keyToResolve); if (typeToConstruct.IsInterface) { throw new ObjectContainerException("Interface cannot be resolved: " + keyToResolve, resolutionPath.ToTypeList()); } return(container.CreateObject(typeToConstruct, resolutionPath, keyToResolve)); }
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); }
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); }
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); }
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); }