Exemplo n.º 1
0
        private DependencyOverride ResolveValueObjectFindSpecificationProvider(IValueObjectMetadata metadata)
        {
            var metadatOverride = new DependencyOverride(metadata.GetType(), metadata);

            return(new DependencyOverride(
                       typeof(IFindSpecificationProvider <,>).MakeGenericType(metadata.ValueObjectType, typeof(AggregateOperation)),
                       _unityContainer.Resolve(typeof(ValueObjectFindSpecificationProvider <,>).MakeGenericType(metadata.ValueObjectType, metadata.EntityKeyType), metadatOverride)));
        }
 private IValueObjectProcessorFactory CreateFactory(IValueObjectMetadata metadata)
 {
     return((IValueObjectProcessorFactory)Activator.CreateInstance(
                typeof(ValueObjectProcessorFactory <,>).MakeGenericType(metadata.GetType().GenericTypeArguments),
                _query,
                _repositoryFactory,
                _comparerFactory));
 }
Exemplo n.º 3
0
        private DependencyOverride ResolveDataChangesDetectorDependency(IValueObjectMetadata metadata)
        {
            var factory = (IValueObjectDataChangesDetectorFactory)_unityContainer.Resolve(
                typeof(ValueObjectDataChangesDetectorFactory <,>).MakeGenericType(metadata.GetType().GetGenericArguments()),
                new DependencyOverride(metadata.GetType(), metadata));
            var detector = factory.Create();

            return(new DependencyOverride(detector.GetType(), detector));
        }
Exemplo n.º 4
0
        public IValueObjectProcessor Create(IValueObjectMetadata metadata)
        {
            var processorType = typeof(ValueObjectProcessor <>).MakeGenericType(metadata.ValueObjectType);

            var processor = _unityContainer.Resolve(
                processorType,
                ResolveDataChangesDetectorDependency(metadata),
                ResolveValueObjectFindSpecificationProvider(metadata));

            return((IValueObjectProcessor)processor);
        }
 public IValueObjectProcessor Create(IValueObjectMetadata metadata)
 {
     return(Create((ValueObjectMetadata <TValueObject, TEntityKey>)metadata));
 }