IService FetchService(Type serviceType) { //an active provider already assigned to this service? IService serviceProvider; if (_serviceProviders.TryGetValue(serviceType, out serviceProvider)) { return(serviceProvider); } //do we even know this service? if (!_unprovidedServices.Contains(serviceType)) { CoreLogger.LogNotice(_loggerModule, string.Format("requested service {0} is not known to this container!", serviceType.Name)); return(null); } //do we have an active provider for this service? an active provider is probably already providing other services, //but can provide this as well IService activeProvider = _activeProviders.Where(p => p.GetType().GetInterfaces().Contains(serviceType)).FirstOrDefault(); if (activeProvider != null) { CoreLogger.LogDebug(_loggerModule, string.Format("adding service {0}, provided by {1}", serviceType.Name, activeProvider.GetType().Name)); _serviceProviders[serviceType] = activeProvider; return(activeProvider); } return(null); }
public virtual void ManualStart() { if (!_running) { _loop = Run(); StartCoroutine(_loop); } else { CoreLogger.LogNotice(name, "TaskQueue.ManualStart called when queue already handling!"); } }