public object Resolve(Type serviceType)
        {
            if (serviceType == null)
            {
                throw new ArgumentNullException(nameof(serviceType));
            }

            var definition = _serviceTable.TryGetService(serviceType);

            if (definition == null)
            {
                return(null);
            }

            switch (definition.Lifetime)
            {
            case Lifetime.Singleton:
                return(_resolvedSingletonServcies.GetOrAdd(definition, d => _serviceCallSiteResolver.Resolve(d)(_root ?? this)));

            case Lifetime.Scoped:
                return(_resolvedScopedServcies.GetOrAdd(definition, d => _serviceCallSiteResolver.Resolve(d)(this)));

            default:
                return(_serviceCallSiteResolver.Resolve(definition)(this));
            }
        }
示例#2
0
        public object Resolve(Type serviceType)
        {
            if (serviceType == null)
            {
                throw new ArgumentNullException(nameof(serviceType));
            }

            var definition = _serviceTable.TryGetService(serviceType);

            return(ResolveDefinition(definition));
        }