Llamo a una función que devuelve un objeto y en determinadas circunstancias este objeto será una lista.Obtener el recuento de una lista de tipo desconocido
Un GetType en este objeto me da fuerzas:
{System.Collections.Generic.List`1[Class1]}
o
{System.Collections.Generic.List`1[Class2]}
etc
No me importa lo que este tipo es, todo lo que quiero es un conde.
que he probado:
Object[] methodArgs=null;
var method = typeof(Enumerable).GetMethod("Count");
int count = (int)method.Invoke(list, methodArgs);
pero esto me da una AmbiguousMatchException que no puedo parecer a moverse sin conocer el tipo.
He tratado de fundición a IList pero consigo:
No se puede convertir objeto de tipo 'System.Collections.Generic.List'1 [ClassN]' al tipo 'System.Collections.Generic.IList' 1 [System.Object] '.
ACTUALIZACIÓN
Marcs respuesta a continuación es realmente correcto. La razón por la que no funcionaba para mí es que tengo:
using System.Collections.Generic;
en la parte superior de mi archivo. Esto significa que siempre estaba usando las versiones genéricas de IList e ICollection. Si especifico System.Collections.IList, esto funciona bien.
¿No sigo necesitando un tipo sin embargo? –
Tal vez estoy haciendo algo mal, pero esto me da: Error 1 \t \t El uso del tipo genérico 'System.Collections.Generic.ICollection' requiere '1' argumentos de tipo –
@ Chris, lista implementa directamente ICollection (no genérico) que tiene una propiedad '.Count'. No se requiere tipo. Se agregó código de muestra para mayor claridad. –
Marc