【发布时间】:2016-03-11 20:33:23
【问题描述】:
我有一个分配给 var data 的通用列表。这个列表的类型取决于之前的代码,我需要从控制器返回泛型类型。看来我不能有take a generic List 的外部方法。
List<T> data = await queriedItems
.Project(x => Mapper.Map<BsonDocument, T>(x)).ToListAsync();
if (data.GetType() == typeof(List<SomeClass>))
{
data = someHelper.HelperMethodChangeData(data);
}
我该如何处理?我正在考虑创建一个新的List<SomeClass> var,然后以某种方式将其通过data 转换为该类,将特定类型的 List 类型传递给我的方法,然后将其转换回泛型,如果这甚至可能的话。我不认为这很重要,但是助手只需要列表中项目的一个子集。
编辑 - 添加辅助签名尝试采用泛型:
public List<T> HelperMethodSignature<T>(List<T> itemsList)
编辑 - 和下面的原始助手签名:
public List<someClass> HelperMethodSignature(List<someClass> itemsList)
我排除了一堆不相关的参数。
【问题讨论】:
-
如果你正在使用 autommaper 和实体框架,你应该使用它的
QueryableExtensions并使用它的ProjectTo(方法,而不是Mapper.Map -
@ScottChamberlain 赞成好的建议,但这是一个 mongoDb 调用。我在其他地方使用了 QueryableExtension(通过 EF 访问 SQL 时),这很有帮助。
-
我不明白这个案子。你有一个辅助方法接收和返回
List<SomeClass>? -
@IvanStoev:假设我缺少一些基本的 C# 概念,因为这可能就是正在发生的事情。问题是我不能(据我所知)确保“数据”是具体类型,但我需要将数据传递给助手并使用它,然后返回 List
或返回 List 并将其转换为 List . -
@IvanStoev:如果我可以将 List
传递给采用 List 并返回 List 的方法,我也很高兴。