/// <summary> /// Provides instances of named registration. It is intended to be used in factory registrations, see example. /// </summary> /// <code> /// _container.AddTransient<ClientA>(s => new ClientA(s.GetByName<IEnumerable<int>>("list"))); /// _container.AddTransient<ClientB>(s => new ClientB(s.GetByName<IEnumerable<int>>("hashSet"))); /// </code> /// <returns></returns> public static TService GetServiceByName <TService>(this IServiceProvider provider, string name) { IServiceByNameFactory <TService> factory = provider.GetService <IServiceByNameFactory <TService> >(); if (factory == null) { throw new InvalidOperationException($"The factory {typeof(IServiceByNameFactory<TService>)} is not registered. Please use {nameof(FactoryServiceCollectionExtensions)}.{nameof(AddByName)}() to register names."); } return(factory.GetByName(name)); }
/// <summary> /// Provides instances of named registration. It is intended to be used in factory registrations, see example. /// </summary> /// <code> /// _container.AddTransient<ClientA>(s => new ClientA(s.GetByName<IEnumerable<int>>("list"))); /// _container.AddTransient<ClientB>(s => new ClientB(s.GetByName<IEnumerable<int>>("hashSet"))); /// </code> /// <returns></returns> public static object GetServiceByName(this IServiceProvider provider, Type serviceType, string name) { Type factoryType = typeof(IServiceByNameFactory <>).MakeGenericType(serviceType); IServiceByNameFactory factory = (IServiceByNameFactory)provider.GetService(factoryType); if (factory == null) { throw new InvalidOperationException($"The factory {factoryType} is not registered. Please use {nameof(FactoryServiceCollectionExtensions)}.{nameof(AddByName)}() to register names."); } return(factory.GetByName(name)); }
private bool TryGetServiceByNameFactory(Type serviceType, out IServiceByNameFactory serviceByNameFactory) { var factoryType = typeof(IServiceByNameFactory <>).MakeGenericType(serviceType); if (TryGetInstance(factoryType, out var factory)) { serviceByNameFactory = factory as IServiceByNameFactory; return(serviceByNameFactory != null); } serviceByNameFactory = null; return(false); }
public CalculateService(ICacheManager cache, IServiceByNameFactory <IOperator> factory) { _cache = cache; _factory = factory; }
public DiscordBotService(DiscordSettings discordSettings, IServiceByNameFactory <IBotCommand> factory) { _discordSettings = discordSettings; _factory = factory; }
public SearchStrategyFactory(IServiceByNameFactory <ISearchStrategy> serviceByNameFactory) { _serviceByNameFactory = serviceByNameFactory; }
public MainRunner(IServiceByNameFactory <IPlugin> pluginFactory, IFactory <IFooService> fooFactory) { _pluginFactory = pluginFactory; _fooFactory = fooFactory; }
public EventController(IServiceByNameFactory <IEventHandler> eventFactory) { _eventFactory = eventFactory; }
public ClientZ(IServiceByNameFactory <IEnumerable <int> > factory) { Dependency = factory.GetByName("hashSet"); }