public static IFluentCommandRepository SetUpCommandRepository <TEntity>(ICommandRepository <TEntity> commandRepository) where TEntity : class, ICommandAggregateRoot { ContractUtility.Requires <ArgumentNullException>(commandRepository.IsNotNull(), "commandRepository instance cannot be null"); var commandRepositoryList = new List <dynamic> { commandRepository }; return(new FluentCommandRepository(null, commandRepositoryList, null)); }
public IFluentCommandRepository SetUpCommandRepository <TEntity>(ICommandRepository <TEntity> commandRepository) where TEntity : class, ICommandAggregateRoot { ContractUtility.Requires <ArgumentNullException>(commandRepository.IsNotNull(), "commandRepository instance cannot be null"); string commandRepositoryTypeName = typeof(ICommandRepository <>).Name; dynamic existingCommandRepository = _repositoriesList.SingleOrDefault(x => x != null && x.GetType().GetGenericTypeDefinition().GetInterface(commandRepositoryTypeName) != null && x.GetType().GenericTypeArguments[0] == typeof(TEntity)); ContractUtility.Requires <ArgumentNullException>(existingCommandRepository == null, string.Format("Command Repository for {0} has already been set up", typeof(TEntity).Name)); if (_unitOfWorkData != null && _unitOfWorkData.UnitOfWork != null) { ((dynamic)commandRepository).SetUnitOfWork(_unitOfWorkData.UnitOfWork); } _repositoriesList.Add(commandRepository); return(new FluentCommandRepository(_unitOfWorkData, _repositoriesList, _operationsQueue)); }