c#反射通用列表计数

时间:2016-02-17 15:24:11

标签: c# generics reflection

是否有一种更简洁的方法可以使用反射获得列表计数呢?

 Boolean include = false;

 foreach (PropertyInfo item in props)
        {
            var pt = item.PropertyType;                

            String listType = pt.GetGenericArguments()[0].Name;

             // Is there a better solution than this?
             switch (listType)
                            {
                                case "jsonResult":
                                    var list = v as List<jsonResult>;

                                    include =  list.count > 0;
                                    break;                                
                            }
        }
    )

我尝试了谷歌搜索的各种想法,但没有运气。

1 个答案:

答案 0 :(得分:1)

我并不完全明白什么是&#34; v&#34;变量,但如果它是一个对象,当它是一个你想要计算的集合时,你可以这样做:

private static int? GetCount(object @object)
{
    var collection = @object as ICollection;
    if (collection == null)
        return null;

    return collection.Count;
}

&#34; GetCount&#34;方法:

11  AGRICULTURE
11  AGRICULTURE
11  AGRICULTURE
321 FOREST NURSERIES AND GATHERING OF FOREST PRODUCTS
411 FISHING
551 METAL SERVICE CENTERS AND OTHER METAL MERCHANT WHO
551 METAL SERVICE CENTERS AND OTHER METAL MERCHANT WHO
321 FOREST NURSERIES AND GATHERING OF FOREST PRODUCTS
551 METAL SERVICE CENTERS AND OTHER METAL MERCHANT WHO