private static bool OnAggregateServiceDependencyResolver(IUnityContainer container, Type type, string targetNamedMapping, ParameterInfo constructorParameter, out object resolvedParameter) { resolvedParameter = null; if (constructorParameter.ParameterType.IsAggregateService()) { if (!constructorParameter.ParameterType.GetTypeInfo().IsInterface) { throw new InvalidOperationException("Aggregate service can't be injected dependency as concrete type. Dependant consumer type: " + type + ". Dependency type:" + constructorParameter.ParameterType); } // Резолв aggregate service-а, который является зависимостью другого aggregate service-а if (type.IsAggregateService()) { resolvedParameter = new ResolvedParameter(constructorParameter.ParameterType, Mapping.ConstructorInjectionNestedAggregateServicesScope); return true; } // constructorParameter - это аргегирующий репозиторий, // Тип для которго настраиваются зависимости, использует упрощенную работу с aggregates layer (через constructor injection и без явного использования UoW), // и упростить её нужно здесь и сейчас resolvedParameter = new ResolvedParameter(constructorParameter.ParameterType, Mapping.ConstructorInjectionAggregateServicesScope); return true; } return false; }
private static bool OnAggregateReadModelDependencyResolver(IUnityContainer container, Type type, string targetNamedMapping, ParameterInfo constructorParameter, out object resolvedParameter) { resolvedParameter = null; if (constructorParameter.ParameterType.IsAggregateReadModel()) { if (!constructorParameter.ParameterType.GetTypeInfo().IsInterface) { throw new InvalidOperationException("Aggregate read model can't be injected dependency as concrete type. Dependant consumer type: " + type + ". Dependency type:" + constructorParameter.ParameterType); } // constructorParameter - это read model // Тип для которго настраиваются зависимости, использует упрощенную работу с aggregates layer (через constructor injection и без явного использования UoW), // и упростить её нужно здесь и сейчас resolvedParameter = new ResolvedParameter(constructorParameter.ParameterType, Mapping.ConstructorInjectionReadModelsScope); return true; } return false; }
private static bool OperationServicesDependencyResolver(IUnityContainer container, Type type, string targetNamedMapping, ParameterInfo constructorParameter, out object resolvedParameter) { resolvedParameter = null; if (typeof(IOperationService).IsAssignableFrom(constructorParameter.ParameterType)) { resolvedParameter = new ResolvedParameter(constructorParameter.ParameterType); return true; } return false; }