根据运行时类型转换 Expando 对象?

Convert Expando Object based on runtime type?

我有类似的东西

Car:Vehicle {}   
Truck:Vehicle {}

数据库 ORM return 可以包含其中任何一个的列表。 Fetch 将丢失 sub class 信息。如果我获取对象或动态,它将 return ExpandoObject 列表。由于下划线框架的限制,我不能传入泛型 T,只能传入字符串。所以我有这样的东西:

Type type = Type.GetType("Car")

我也可以像这样创建一个类型化的 List

var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(type);
var list = Activator.CreateInstance(specificListType) as IList;

不确定从这里去哪里。反射似乎效率不高,也无法添加到IList。有什么提示吗?谢谢

原来我使用的微型 ORM,schotime/NPoco,内置了这个

Type type = typeof(Vehicle).Assembly.GetType("Car");
var cars = db.Query<Vehicle>(
         new[] { type }, null, new Sql("select * from cars"));