internal static QueryHandlerDelegate <TResult> FromQueryHandler <TQuery, TResult>(IQueryAsyncHandler <TQuery, TResult> queryAsyncHandler)
     where TQuery : class, IQuery <TResult>
 {
     return(new QueryHandlerDelegate <TResult>(async(inputQuery, ct) =>
     {
         TQuery query = EnsureValidQuery <TQuery, TResult>(inputQuery);
         return await queryAsyncHandler.HandleAsync(query, ct).ConfigureAwait(false);
     }));
 }
        internal static QueryHandlerDelegate <TResult> FromFactory <TQuery, TResult>(Func <IQueryAsyncHandler <TQuery, TResult> > queryHandlerFactory)
            where TQuery : class, IQuery <TResult>
        {
            return(new QueryHandlerDelegate <TResult>(async(inputQuery, ct) =>
            {
                TQuery query = EnsureValidQuery <TQuery, TResult>(inputQuery);
                IQueryAsyncHandler <TQuery, TResult> instance = EnsureInstanceFromFactory(queryHandlerFactory);

                return await instance.HandleAsync(query, ct).ConfigureAwait(false);
            }));
        }