10
votes

Obtenez le nombre d'une liste de type inconnu

J'appelle une fonction qui renvoie un objet et dans certaines circonstances, cet objet sera une liste.

Un gettype sur cet objet peut me donner: xxx

ou xxx

etc

Je me fiche de ce que ce type est, tout ce que je veux, c'est un compte.

J'ai essayé: xxx

mais cela me donne une impression ambiguë que je ne peux pas sembler contourner sans connaître le type.

J'ai essayé de jeter à IList mais je reçois:

Impossible de lancer l'objet de type 'System.Collections.generic.list'1 [Classn]' to Tape 'System.Collections.Generic. .Ilist'1 [system.Object] '.

mise à jour

La réponse des Marcs ci-dessous est réellement correcte. La raison pour laquelle il ne travaillait pas pour moi est que j'ai: xxx

en haut de mon fichier. Cela signifie que j'utilisais toujours les versions génériques d'IList et d'Icollection. Si je spécifie System.Collections.List, cela fonctionne correctement.


0 commentaires

5 Réponses :


16
votes

le jeter à l'ICollection et utilisez ce .Count xxx


6 commentaires

Je n'ai toujours pas besoin d'un type cependant?


Peut-être que je fais quelque chose de mal, mais cela me donne: Erreur 1 à l'aide du type générique 'System.Collections.Generic.Collection ' nécessite des arguments de type "1"


@Chris, liste implémente directement iCollection (non générique) qui a un .Count propriété. Aucun type requis. Ajout de code d'échantillon pour clarté.


@Chris, j'ai essayé de faire un exemple complètement autonome, espérons que cela aide.


Si je spécifie System.Collections.icollection ou System.Collections.List - Cela fonctionne actuellement maintenant. Parce que j'avais l'aide de System.Collections.Generic; Il utilisait les versions génériques de ces interfaces. Merci


Bon travail Marc! Chris, veuillez marquer comme solution, afin que je puisse le trouver si j'envoie jamais à ceci (je utilise la liste tout le temps de mon code, alors ....)



0
votes

Utilisez getProperty au lieu de getMethod


0 commentaires

3
votes

Vous pouvez faire ce xxx

supposant que vous voulez le faire par réflexion qui est.


3 commentaires

J'aime ça, mais cela ne fonctionne que lorsque la liste réellement est un type d'icollection. Je ne pense pas que ce soit toujours le cas dans la question de l'OP.


Certes, il est un peu difficile à dire, mais puisque les exemples donnés sont tous les deux List Ceci fonctionne pour les cas donnés. Cependant, en regardant la réponse acceptée, il semble qu'il n'y ait vraiment aucune raison d'utiliser la réflexion dans ce cas. Si la réflexion n'est pas nécessaire, il est beaucoup plus facile de simplement lancer au type approprié.


N'a pas travaillé pour moi: "Utiliser le type générique" Icollection "nécessite 1 arguments de type"



0
votes

Vous pouvez faire ce xxx


0 commentaires

0
votes

Cela pourrait aider ... XXX


0 commentaires