public ResolutionTracer CreateChild(string prefix) { var child = new ResolutionTracer(this, prefix); _messages.Add(child.ToString); return(child); }
public virtual object GetObject(ResolutionTracer tracer, ResolutionContext context, Container locator, params IParameterOverride[] overrides) { if (_instance != null) { tracer?.Add($"Resolved to cached instance {_instance}"); return(_instance); } else if (_concreteType != null) { context.ResolvedType = _concreteType; var obj = locator.CreateInstance(_concreteType, tracer, context, overrides); if (_isSingleton) { tracer?.Add($"Caching {obj} as singleton"); _instance = obj; } return(obj); } else { throw new Exception("Unable to get object, invalid registration."); } }
public override object GetObject(ResolutionTracer tracer, ResolutionContext context, Container locator, params IParameterOverride[] overrides) { if (Instance == null) { var obj = CreateObject(context, locator); tracer?.Add($"Factory created {obj}"); if (_isSingletonFactory) { tracer?.Add($"Caching result {obj} as singleton"); Resolve(obj); } return(obj); } else { return(base.GetObject(tracer, context, locator)); } }
public ResolutionTracer(ResolutionTracer parent, string prefix) { _indent = (parent?._indent ?? 0) + 1; _prefix = prefix ?? string.Empty; }