J'appelle une fonction qui retourne un objet et dans certaines circonstances cet objet sera une liste.Obtenir le nombre d'une liste de type inconnu
A GetType sur cette question pourrait d'objet me donne:
{System.Collections.Generic.List`1[Class1]}
ou
{System.Collections.Generic.List`1[Class2]}
etc
Je me fiche de ce que ce type est tout ce que je veux est un comte.
J'ai essayé:
Object[] methodArgs=null;
var method = typeof(Enumerable).GetMethod("Count");
int count = (int)method.Invoke(list, methodArgs);
mais cela me donne une AmbiguousMatchException que je ne peux pas sembler se déplacer sans connaître le type.
J'ai essayé casting à IList mais je reçois:
Impossible de jeter l'objet de type 'System.Collections.Generic.List'1 [ClassN]' taper 'System.Collections.Generic.IList' 1 [System.Object] '.
MISE À JOUR
Marcs réponse ci-dessous est en fait correcte. La raison pour laquelle cela ne fonctionnait pas pour moi est que j'ai:
using System.Collections.Generic;
en haut de mon dossier. Cela signifie que j'ai toujours utilisé les versions génériques de IList et ICollection. Si je spécifie System.Collections.IList alors cela fonctionne bien.
Ne pas j'ai encore besoin d'un type bien? –
peut-être que je fais quelque chose de mal, mais cela me donne: Erreur Utilisation du type générique « System.Collections.Generic.ICollection » exige « 1 » arguments de type –
@ Chris, Liste implémente directement ICollection (non générique) qui a une propriété '.Count'. Aucun type requis. Ajout d'un exemple de code pour plus de clarté. –
Marc