我正在使用这个整洁的classes将MySQL数据库中的数据表映射到对象中。
现在,我想编写一个泛型函数来返回各种不同类的列表,以便我可以调用:

List<Person> persons = ReadDataTable<Person>();
List<Car> persons = ReadDataTable<Car>();


还有更多的课程。

但是我不理解如何在我的通用函数中创建对象DataNamesMapper:

public List<T> ReadDataTable<T>()
{
  List<T> parsedObjects = new List<T>();
  DataNamesMapper<typeof(T)> mapper = new DataNamesMapper<typeof(T)> (); //<- error
  DataNamesMapper<Person> mapper = new DataNamesMapper<Person> (); //<- no error, non-generic
  //...query data, map and fill list
  return parsedObjects;
}


DataMapper定义为:

public class DataNamesMapper<TEntity> where TEntity : class, new()
{
...
}


这可能吗?

最佳答案

DataNamesMapper是开放类型。要使其对T封闭,您需要使用以下语法:

DataNamesMapper<T> mapper = new DataNamesMapper<T>();

关于c# - 将类作为参数传递给泛型函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54438866/

10-11 01:09