public Task <TResult> DispatchAsync <TQuery, TResult>(TQuery query)
            where TQuery : IQuery
            where TResult : IQueryResult
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            IQueryHandler <TQuery, TResult> handler = _container.Resolve <IQueryHandler <TQuery, TResult> >();

            return(handler.RetrieveAsync(query));
        }