如何使用运行时中定义的类型实现与listOfBaseItems.Cast<Child>()
类似的东西? e.g。
var t = typeof(Child); // the type would be a method argument in my case
var desiredType = typeof(List<>).MakeGenericType(t);
var castedList = Convert.ChangeType(listOfBaseItems, desiredType);
我得到一个例外,即项目没有实现IConvertible
。我错过了什么?
答案 0 :(得分:4)
假设强制转换是合法的(例如listOfBaseItems
实际上包含子项),那么您可以在运行时调用Cast
(这是Enumerable
类中的通用扩展方法)这样:
var result =
typeof(Enumerable)
.GetMethod("Cast")
.MakeGenericMethod(t)
.Invoke(null, new object[] {listOfBaseItems});