Пример #1
0
        public ResolutionTracer CreateChild(string prefix)
        {
            var child = new ResolutionTracer(this, prefix);

            _messages.Add(child.ToString);
            return(child);
        }
Пример #2
0
        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.");
            }
        }
Пример #3
0
        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));
            }
        }
Пример #4
0
 public ResolutionTracer(ResolutionTracer parent, string prefix)
 {
     _indent = (parent?._indent ?? 0) + 1;
     _prefix = prefix ?? string.Empty;
 }