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

时间:2015-02-13 21:20:55

标签: generics reflection expandoobject

我有类似

的东西
Car:Vehicle {}   
Truck:Vehicle {}

数据库ORM返回列表,可以包含任何一个。获取<车辆>将丢失子类信息。如果我获取对象或动态,它将返回ExpandoObject列表。由于下划线框架限制,我无法传递通用T,只传递字符串。所以我有这样的事情:

Type type = Type.GetType("Car")

我还可以创建一个类型化列表<汽车>像这样

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

不知道从哪里开始。反思似乎不是很有效,也不能添加到IList。任何提示?感谢。

1 个答案:

答案 0 :(得分:0)

我使用的微型ORM schotime/NPoco已内置

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