我有一个名为 myTable
的表。使用 EntityFramework,我可以像这样创建一个查询 myTable
的列表:
List<myTable> myList = context.myTables.ToList();
我想在“Utilities”类中创建一个可重用的方法,我可以在其中向该方法传递一个表类型并创建该类型的列表。
类似于:
public static void ListFromType(Type suppliedTableType)
{
List<supliedTableType> myList = new List<suppliedTableType>();
}
最佳答案
你正在尝试做的事情不会编译(我相信你知道)
public static void ListFromType(Type suppliedTableType)
{
List<supliedTableType> myList = new List<suppliedTableType>();
}
首先方法是 void
这意味着它什么都不返回,其次你使用的是 System.Type
实例作为通用类型参数不起作用。
当您查看问题时,它会引出一个问题,为什么要这样做呢?您总是必须知道创建列表实例的类型,那么为什么不一直直接分配一个列表呢?为什么要调用辅助方法来简单地做:
List<myTable> someList = new List<myTable>();
// or to save yourself from typing myTable twice
var someList = new List<myTable>();
如果您真的想要一些实现完全相同的奇特 Linq,您可以使用 Enumerable.Empty<T>
并调用ToList()
在上面:
List<myTable> someList = Enumerable.Empty<myTable>().ToList();
如果您的目标是基于 System.Type
创建列表变量(如非编译代码示例中所示),则必须混合使用反射和 Enumerable
的其他方法. @Camilo 指出了 fairly relevant question and answer这可以帮助解决这些问题。你的问题被标记为泛型而不是反射,所以我不想做太多假设。
关于c# - 将表类型作为 T 传递给通用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50222775/