我有这个通用函数:

public List<T> GetList<T>() {
    var businesType = typeof(T);
    var databaseType = AutoMapperConfiguration.TypeMapping[businesType];

    var databaseEntityList = DataModelAccess.GetEntityList(databaseType);

    var businessEntityList = Mapper.Map(databaseEntityList, databaseEntityList.GetType(), typeof(List<T>));
    return (List<T>)businessEntityList;

}

但我想要的是,像这样调用DataModelAccess:
DataModelAccess.GetEntityList(databaseType);

将databasetype作为泛型类型发送,如下所示:
DataModelAccess.GetEntityList<DatabaseType>();

为了返回这个方法,比如List<T>
谢谢您!
p.s.datamodelacess.getEntityList(databaseType)的定义是:
public static List<object> GetEntityList(Type databaseType)
{
    //get data from database
    //retunt it as List<object> <= and I dont like that
}

最佳答案

一个非常类似于GetList<T>的函数应该可以为您解决这个问题。

public List<T> GetEntityList<T>() { }

然后你可以调用它
typeof(DataModelAccess)
    .GetMethod("GetEntityList")
    .MakeGenericMethod(databaseType)
    .Invoke();

希望这有帮助。

10-08 11:20