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