public IAggregateReadModel CreateAggregateReadModel(Type aggregateReadModelType) { if (!aggregateReadModelType.IsAggregateReadModel()) { throw new ArgumentException("Type specified as aggregate read model have to implement interace " + Indicators.Aggregates.ReadModel); } if (aggregateReadModelType.GetTypeInfo().IsInterface) { throw new InvalidOperationException("Can't create aggregate read model by interface " + aggregateReadModelType + ". Factory must be used for concrete types only. Try check and use mapping interface2concrete"); } var readDomainContextProviderProxy = new ReadableDomainContextProviderProxy(_scopedDomainContextsStore, _domainContextHost); var dependencyOverrides = new DependencyOverrides { // указываем какие экземпляры использовать при resolve нижеуказанных зависимостей // данные типы зависимостей даже не должны регистророваться в DI-контейнере, т.е. resolve // работает ТОЛЬКО из-за того, что мы явно указываем какие экземпляры для каких типов зависимостей нужно использовать { typeof(IReadableDomainContextProvider), readDomainContextProviderProxy }, }; return (IAggregateReadModel)_unityContainer.Resolve(aggregateReadModelType, Mapping.ExplicitlyCreatedAggregateRepositoriesScope, dependencyOverrides); }
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); }