private InstanceFactory ResolveDependency(Type type, ServiceBinding dependency, CircularDependencyDetector circularDependencyDetector) { circularDependencyDetector.Enter(type); GenerateBaseExpression(dependency, circularDependencyDetector); InstanceFactory factory = GenerateInstanceFactory(type, dependency, circularDependencyDetector); circularDependencyDetector.Leave(type); return(factory); }
private InstanceFactory?TryResolveDependency(Type type, ServiceBinding dependency, CircularDependencyDetector circularDependencyDetector) { try { Settings.Logger.Log($"{nameof(TryResolveDependency)} for {type}", circularDependencyDetector.Count); circularDependencyDetector.Enter(type); GenerateBaseExpression(dependency, circularDependencyDetector); InstanceFactory factory = GenerateInstanceFactory(type, dependency, circularDependencyDetector); return(factory); } catch (Exception e) { dependency.ResolveError = new DependencyResolveException(type, dependency, e); return(null); } finally { circularDependencyDetector.Leave(type); } }