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)); } }
public object Resolve(Type serviceType) { if (serviceType == null) { throw new ArgumentNullException(nameof(serviceType)); } var definition = _serviceTable.TryGetService(serviceType); return(ResolveDefinition(definition)); }