[英]How to cast an object to a List
我有一个实际上是列表的对象。 我有一个字符串,元素类型是什么,但是我不知道如何将对象转换为列表? 这是一些描述我的问题的代码。
class Data
{
public int ID { get; set; }
public List<double> Values { get; set; }
}
static void Main(string[] args)
{
Data d = new Data() { ID = 69, Values = new List<double>() };
d.Values.Add(1.0);
d.Values.Add(2.0);
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(Data));
var propInfo = typeof(Data).GetProperties();
foreach (var p in propInfo)
{
var Value = p.GetValue(d, null);
var Type = p.PropertyType;
if (Type.IsGenericType && Type.GetGenericTypeDefinition() == typeof(List<>))
{
// get the element type of a list
var ElementType = Value.GetType().GetProperty("Item").PropertyType;
// how to cast to List< "ElementType" > ???
}
else
{
types.Add( Type.FullName );
}
}
}
泛型和反射效果不佳。 最好的选择是使用非通用的IList
API:
IList list = (IList)Value;
然后,您可以迭代,按索引访问,添加,删除等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.