我正在尝试制作模型反射工具。到目前为止,我已经走了很长一段路,但现在我被困住了。
我有这个
public static void RenderModelList(List<T> modelList)
{
foreach (T model in modelList)
{
PropertyInfo[] properties = model.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
object propValue = property.GetValue(model, null);
//Check if the property is a collection and do recursion
if (propValue != null)
{
if (isCollection(propValue))
{
//This only works for Lists of the same <T>
List<T> li = Convert.ChangeType(propValue, propValue.GetType()) as List<T>;
if (li != null)
{
if (li.Count > 0)
{
RenderModelList(li, loop);
}
}
else
{
//Its another type what to do?
// Create a List<> of unknown type??
}
}
}
}
}
}
我的问题是,如果我通过这个方法 aList<Persons>
并且 Person 有一个属性是 a List<Cars>
- 我不能使用 Convert.ChangeType - 因为这不是 T。
那么如何循环通过“列表”并访问该对象的属性?