Exemplo n.º 1
0
        public override object Get(IDependencyResolver resolver)
        {
            if (_alreadyInvoke)
            {
                throw new CyclicDependencyException(FactoryStack);
            }

            FactoryStack.Push(this);
            _alreadyInvoke = true;

            object instance = _resolvableInstantiator.ResolveAndReject(resolver, null);

            IResolvableInjectable <object, object, object>[] resolvableInjectables = _resolvableMembersProvider?.ForType(instance.GetType()).ToArray();
            if (resolvableInjectables != null)
            {
                foreach (IResolvableInjectable <object, object, object> resolvableMember in resolvableInjectables)
                {
                    resolvableMember.TryResolveAndInject(resolver, instance);
                }
            }

            _alreadyInvoke = false;
            FactoryStack.Pop();

            return(instance);
        }