Я вызываю функцию, которая возвращает объект, и в определенных обстоятельствах этот объект будет List.Получить граф неизвестного типа
GetType на этом объект может мне дает:
{System.Collections.Generic.List`1[Class1]}
или
{System.Collections.Generic.List`1[Class2]}
и т.д.
Я не волнует, что этот тип, все, что я хочу, это граф.
Я пробовал:
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]».
UPDATE
Marcs ответить ниже на самом деле правильно. Причина, по которой он не работал для меня, заключается в том, что у меня есть:
using System.Collections.Generic;
в верхней части моего файла. Это означает, что я всегда использовал общие версии IList и ICollection. Если я укажу System.Collections.IList, тогда это будет нормально.
Не я все еще нужен тип хотя? –
может быть, я делаю что-то неправильно, но это дает мне: Ошибка \t \t 1 Использование универсального типа «System.Collections.Generic.ICollection» требует «1» аргументы типа –
@ Крис, список непосредственно реализует ICollection (не родовое), который имеет свойство '.Count'. Не требуется тип. Добавлен образец кода для ясности. –
Marc