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)); }
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)); }
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)); }