@@ -34,15 +34,18 @@ public static object[] Run<TSource, TTarget>(this IQueryable<TSource> source, Qu
3434 return db is not null ? BuildQuery < TSource , TTarget > ( db , source , query , mapper ) . ToArray ( ) : Array . Empty < object > ( ) ;
3535 }
3636
37- public static MethodInfo ? GetRunMethod ( Type executorType , Type [ ] genericArgs )
37+ public static object [ ] InvokeRunMethod ( Type [ ] genericArgs , object ? [ ] parameters )
3838 {
39- return executorType
39+ var method = typeof ( QueryExecutor )
4040 . GetMethods ( BindingFlags . Static | BindingFlags . Public )
4141 . FirstOrDefault ( m =>
4242 m . Name == "Run" &&
4343 m . IsGenericMethodDefinition &&
4444 m . GetGenericArguments ( ) . Length == genericArgs . Length )
4545 ? . MakeGenericMethod ( genericArgs ) ;
46+
47+ var result = method ? . Invoke ( null , parameters ) ?? Array . Empty < object > ( ) ;
48+ return ( object [ ] ) result ;
4649 }
4750
4851 private static IQueryable < object > BuildQuery < TSource , TTarget > ( DbContext db , IQueryable < TSource > source , Query ? query , IMapper ? mapper = null )
@@ -242,11 +245,10 @@ private static IEnumerable<dynamic> RunSubquery(DbContext db, Query? query)
242245 var method = methods ? . FirstOrDefault ( m => m . CustomAttributes . Count ( ) == 1 ) ;
243246 var dbSet = prop . GetValue ( db ) ?? throw new ValidationException ( $ "DbSet property '{ prop . Name } ' is null in DbContext.") ;
244247 var genericType = prop . PropertyType . GetGenericArguments ( ) . FirstOrDefault ( ) ?? throw new ValidationException ( $ "Missing DbSet generic type") ;
248+ var queryable = dbSet ? . GetType ( ) . GetMethod ( "AsQueryable" ) ? . Invoke ( dbSet , null ) ;
245249
246- var genericMethod = GetRunMethod ( typeof ( QueryExecutor ) , [ genericType ] ) ;
250+ return InvokeRunMethod ( [ genericType ] , [ queryable , query ] ) ;
247251
248- var queryable = dbSet ? . GetType ( ) . GetMethod ( "AsQueryable" ) ? . Invoke ( dbSet , null ) ;
249- return genericMethod ? . Invoke ( null , [ queryable , query ] ) as IEnumerable < dynamic > ?? Array . Empty < dynamic > ( ) ;
250252 }
251253
252254 private static dynamic ? ProjectField ( object ? obj , string field )
0 commit comments