Search code examples
c#genericsgeneric-listgeneric-collections

C# multiple generic types in method input and output collection


I have generic query method which looks like below

List<T> Query<T>(QueryModel query) where T : BaseClass 
{
      // get data and Deserialize by T
}

// where T is Table DTO, to Deserialize response by T

Now I want to implement multiple query execution parallelly

for that I need to have multiple type parameters in response and input and want to achieve something like this:

List<T1, T2, T3> Query<T1, T2, T3>(List<QueryModel> queries) 
     where T1: BaseClass,
     where T2: BaseClass,
     where T3: BaseClass 
{
     // for each query in queries
     // get data for each query and 
     // deserialize each by T1/T2/T3 accordingly
     // return all responses in single generic collection
}

here in above example 3 queries can be there, each can be deserialized by provided typed parameters accordingly.

but I believe we can't have more than one typed parameters with collections like List, Not sure how this can be achieved.

PS : I can go for limited set of Tables for now to query, e.g query with 3-4 typed parameters, so can add overload with fix number of typed parameters, It would be great if there is some solution for n number of typed parameters.


Solution

  • You could perhaps write it like

    (T1 r1, T2 r2, T3 r3) Query<T1, T2, T3>(QueryModel q1,QueryModel q2,QueryModel q3 )
    

    This would not allow an arbitrary number of queries, but you cannot have a variable number of generic arguments anyway, so I don't see any way to do that while keeping the generic types.