protected override object CreateNewRegionItem(string candidateTargetContract) { object instance; try { var uri = _uri as NavigationUri; if (uri == null) { instance = _serviceLocator.GetInstance <object>(candidateTargetContract); } else { // Create injection overrides for all the types in the uri var depoverride = new DependencyOverrides(); foreach (var supplant in uri) { depoverride.Add(supplant.Key, supplant.Value); } instance = _unityContainer.Resolve <object>(candidateTargetContract, depoverride); } } catch (ActivationException exception) { throw new InvalidOperationException(string.Format(System.Globalization.CultureInfo.CurrentCulture, "CannotCreateNavigationTarget", new object[] { candidateTargetContract }), exception); } return(instance); }
public IAggregateService CreateRepository(Type aggregateRepositoryType) { if (!aggregateRepositoryType.IsAggregateRepository()) { throw new ArgumentException("Type specified as aggregate repository have to implement interace " + Indicators.Aggregates.Repository); } if (aggregateRepositoryType.GetTypeInfo().IsInterface) { throw new InvalidOperationException("Can't create aggregate repository by interface " + aggregateRepositoryType + ". Factory must be used for concrete types only. Try check and use mapping interface2concrete"); } var readDomainContextProviderProxy = new ReadableDomainContextProviderProxy(_scopedDomainContextsStore, _domainContextHost); var modifiableDomainContextProviderProxy = new ModifiableDomainContextProviderProxy(_scopedDomainContextsStore, _domainContextHost); var dependencyOverrides = new DependencyOverrides { // указываем какие экземпляры использовать при resolve нижеуказанных зависимостей // данные типы зависимостей даже не должны регистророваться в DI-контейнере, т.е. resolve // работает ТОЛЬКО из-за того, что мы явно указываем какие экземпляры для каких типов зависимостей нужно использовать { typeof(IReadableDomainContextProvider), readDomainContextProviderProxy }, { typeof(IModifiableDomainContextProvider), modifiableDomainContextProviderProxy } }; return (IAggregateService)_unityContainer.Resolve(aggregateRepositoryType, Mapping.ExplicitlyCreatedAggregateRepositoriesScope, dependencyOverrides); }
private Channel CreateChannelConnection(string channelName) { var connection = GetIrcConnection(channelName); var overrides = new DependencyOverrides(); overrides.Add(typeof(TwitchConnector), this); overrides.Add(typeof(IrcConnection), connection); return DependencyInjector.Resolve<Channel>(overrides, new ParameterOverride("channelName", channelName));//TODO: Encapsulate parameters }
public ResolveContext Create(DependencyInjectionContainer container, DependencyOverrides dependencyOverrides = null) { if (_perThreadResolveContext.IsValueCreated == false) { return(_perThreadResolveContext.Value = new ResolveContext(container, dependencyOverrides)); } return(_perThreadResolveContext.Value.ChangeInitialContext(container, dependencyOverrides)); }
private Plugin CreatePluginFromAssembly(Assembly assembly) { PluginAttribute attr = assembly.GetCustomAttribute<PluginAttribute>(); if (attr == null) { throw new ArgumentException($"Assembly '{assembly.FullName}' doesn't have a PluginAssemblyAttribute", "assembly"); } DependencyContainer.RegisterType(attr.PluginClass, new ContainerControlledLifetimeManager()); var overrides = new DependencyOverrides(); overrides.Add(typeof(PluginManager), Manager); return (Plugin)DependencyContainer.Resolve(attr.PluginClass, overrides); }
public IAggregateReadModel CreateAggregateReadModel(Type aggregateReadModelType) { if (!aggregateReadModelType.IsAggregateReadModel()) { throw new ArgumentException("Type specified as aggregate read model have to implement interace " + Indicators.Aggregates.ReadModel); } var readableDomainContextProvider = new ReadableDomainContextProvider(_scopedDomainContextsStore, _domainContextScope); var dependencyOverrides = new DependencyOverrides { // указываем какие экземпляры использовать при resolve нижеуказанных зависимостей // данные типы зависимостей даже не должны регистророваться в DI-контейнере, т.е. resolve // работает ТОЛЬКО из-за того, что мы явно указываем какие экземпляры для каких типов зависимостей нужно использовать { typeof(IReadableDomainContextProvider), readableDomainContextProvider }, }; return (IAggregateReadModel)_unityContainer.Resolve(aggregateReadModelType, Mapping.ExplicitlyCreatedAggregateServicesScope, dependencyOverrides); }
private WhisperConnection CreateWhisperConnection() { var connectionInfo = Api.GetWhisperServers().First(); var connection = CreateIrcConnection(connectionInfo); var overrides = new DependencyOverrides(); overrides.Add(typeof(TwitchConnector), this); overrides.Add(typeof(IrcConnection), connection); return DependencyInjector.Resolve<WhisperConnection>(overrides); }
public ResolveContext Create(DependencyInjectionContainer container, DependencyOverrides dependencyOverrides = null) { return(new ResolveContext(container, dependencyOverrides)); }