Exemple #1
0
        public object Resolve(IRegistration registration)
        {
            switch (registration.Lifetime)
            {
            case Lifetime.Transient:
                return(registration.SpawnInstance(this));

            case Lifetime.Singleton:
                if (Parent is null)
                {
                    return(Root.Resolve(registration));
                }

                if (!registry.Exists(registration.ImplementationType))
                {
                    return(Parent.Resolve(registration));
                }

                return(CreateTrackedInstance(registration));

            case Lifetime.Scoped:
                return(CreateTrackedInstance(registration));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }