C# 将列表动态转换为列表

C# 将列表动态转换为列表,c#,.net,reflection,system.reflection,C#,.net,Reflection,System.reflection,我有一个列表,只有在运行时通过反射才能找到对象的类型。但当我尝试将列表分配给实际实体时,它抛出了错误,因为对象无法转换。下面是代码 var obj = new List<Object>(); obj.Add(cust1); obj.Add(Cust2); Type newType = t.GetProperty("Customer").PropertyType// I will get type from property var data= Convert.ChangeType(o

我有一个列表,只有在运行时通过反射才能找到对象的类型。但当我尝试将列表分配给实际实体时,它抛出了错误,因为对象无法转换。下面是代码

var obj = new List<Object>();
obj.Add(cust1);
obj.Add(Cust2);
Type newType = t.GetProperty("Customer").PropertyType// I will get type from property
var data= Convert.ChangeType(obj,newType); //This line throws error`
您的obj对象不是客户,而是客户列表。 因此,您应该通过以下方式获得它的类型:

var listType = typeof(List<>).MakeGenericType(t);

Type t=t.GetPropertyCustomer.PropertyType//I将从属性获取类型-您正在定义一个变量,同时使用该变量。那没有道理。你到底为什么需要一份清单?从描述来看,听起来好像您想要将一个列表转换为一个在运行时确定T的列表,但是数据必须具有type对象,因为它可以保存任何列表。这使得您的代码的类型更加弱;我只是以代码为例。我将获得来自不同系统的对象列表,类型名称为string。我需要动态转换它们。@sabaedge-cust1和cust2的类型是什么?
object data = Activator.CreateInstance(listType);
foreach (var o in obj)
{
     listType.GetMethod("Add").Invoke(data, new []{o} );
}