gpt4 book ai didi

c# - 获取未知类型列表的计数

转载 作者:太空狗 更新时间:2023-10-29 18:21:08 25 4
gpt4 key购买 nike

我正在调用一个返回对象的函数,在某些情况下,这个对象将是一个列表。

此对象上的 GetType 可能会给我:

{System.Collections.Generic.List`1[Class1]}

{System.Collections.Generic.List`1[Class2]}

等等

我不关心这个类型是什么,我只想要一个 Count。

我试过:

Object[] methodArgs=null;
var method = typeof(Enumerable).GetMethod("Count");
int count = (int)method.Invoke(list, methodArgs);

但这给了我一个 AmbiguousMatchException,我似乎无法在不知道类型的情况下绕过它。

我试过转换到 IList 但我得到:

无法将类型为“System.Collections.Generic.List”1[ClassN]”的对象转换为类型“System.Collections.Generic.IList”1[System.Object]”。

更新

Marcs 下面的回答实际上是正确的。它对我不起作用的原因是我有:

using System.Collections.Generic;

在我的文件的顶部。这意味着我一直在使用 IList 和 ICollection 的通用版本。如果我指定 System.Collections.IList 那么这工作正常。

最佳答案

将其转换为 ICollection 并使用 .Count

using System.Collections;

List<int> list = new List<int>(Enumerable.Range(0, 100));

ICollection collection = list as ICollection;
if(collection != null)
{
Console.WriteLine(collection.Count);
}

关于c# - 获取未知类型列表的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3418047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com