public virtual Task <T> ExecuteQuery <T>(ICosmosDbQuery <T> query) { var inMemoryStore = _serviceProvider.GetRequiredService <InMemoryDocumentStore>(); var handlerType = typeof(ICosmosDbQueryHandler <,>).MakeGenericType(query.GetType(), typeof(T)); var handler = _serviceProvider.GetRequiredService(handlerType); // TODO We could make this waaay more efficient var result = (T)handlerType.GetMethod("Execute").Invoke(handler, new object[] { inMemoryStore, query }); return(Task.FromResult(result)); }
public virtual async Task <T> ExecuteQuery <T>(ICosmosDbQuery <T> query) { await _storedProcedureDeployHelper.EnsureStoredProceduresAreDeployed(); var client = _serviceProvider.GetRequiredService <DocumentClient>(); var configuration = _serviceProvider.GetRequiredService <Configuration>(); var handlerType = typeof(ICosmosDbQueryHandler <,>).MakeGenericType(query.GetType(), typeof(T)); var handler = _serviceProvider.GetRequiredService(handlerType); // TODO We could make this waaay more efficient var result = await(Task <T>) handlerType.GetMethod("Execute").Invoke(handler, new object[] { client, configuration, query }); return(result); }