protected QueryResultReader <TResult> ExecuteQuery <TResult>(Func <QueryResult, TResult> mappingCallback, Action <QueryResult, TResult> injectingCallback) { var queryResult = QueryProvider.ExecuteReader(BuildQuery()); return(new QueryResultReader <TResult>(queryResult, mappingCallback, injectingCallback)); }