如何将对象强制转换为列表

本文关键字:转换 列表 对象 | 更新日期: 2023-09-27 18:31:18

>我有一个对象,它实际上是一个列表。我有一个字符串,元素类型是什么,但我不知道如何将对象转换为列表?这是一些描述我的问题的代码。

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;

然后你可以迭代,按索引访问,添加,删除等。

相关文章: