【发布时间】:2021-09-07 12:31:38
【问题描述】:
我有如下所示的通用查询方法
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
现在我想并行实现多个查询执行
为此,我需要有多个类型参数作为响应和输入,并希望实现这样的目标:
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
}
在上面的示例中可以有 3 个查询,每个查询都可以通过提供的类型参数相应地反序列化。
但我相信对于 List 之类的集合,我们不能有多个类型的参数,不确定如何实现。
PS:我现在可以使用有限的表集进行查询,例如使用 3-4 个类型化参数进行查询,因此可以添加固定数量的类型化参数的重载,如果 n 数有一些解决方案会很棒类型参数。
【问题讨论】:
-
如果您的意图是将所有结果放入一个列表中,那么显而易见的是返回
List<BaseClass>。但是你没有给出关于你在做什么的很多细节,所以前面只是一个猜测。 -
如果目标是并行查询,为什么不直接调用不同类型的第一个查询呢?
标签: c# generics generic-list generic-collections