public static IServiceCollection AddQuery <TQuery, TQueryResult, TQueryHandler>(this IServiceCollection services) where TQuery : class where TQueryHandler : class, IQueryHandler <TQuery, TQueryResult> { // add handler to DI. services.AddTransient <IQueryHandler <TQuery, TQueryResult>, TQueryHandler>(); // add for discovery purposes. var queryMeta = new QueryMeta(typeof(TQuery), typeof(IQueryHandler <TQuery, TQueryResult>), typeof(TQueryResult)); services.AddSingleton <IQueryMeta>(queryMeta); return(services); }
/// <summary> /// Trying to add meta for pair `sqlSeed`--`query` /// </summary> /// <param name="sqlSeed">Object used as seed to builing sql query.</param> /// <param name="query">Query that will connected to meta data.</param> /// <returns>Created meta data.</returns> protected QueryMeta RegisterateSQLQuery(object sqlSeed, Query query) { try { QueryMeta meta = new QueryMeta() { entryQuery = query }; metaTable.Add(sqlSeed, meta); return(meta); } catch//(Exception ex) { // Commented because not all queries has implemented SQLQueryHandler, // so here will no registration of that query. That will cause a spam messages into console. //Console.WriteLine("ERROR: SqlQueryHandler | Query not registred." + // "Details: " + ex.Message); return(null); } }