J'ai un objet que j'ai fini avec via un appel de réflexion:objet [] de ReadOnlyCollection <T>
object readOnlyCollectionObject = propertyInfo.GetValue(someEntity, null);
Je sais que cet objet est un ReadOnlyCollection générique. Il pourrait s'agir d'un ReadOnlyCollection<Cat>
, ReadOnlyCollection<Dog>
, etc. Pour l'amour de l'argument, disons simplement qu'il s'agit d'un ReadOnlyCollection<T>
.
Même si un Dog dérive d'un objet, je sais qu'un ReadOnlyCollection<Dog>
ne dérive pas d'un ReadOnlyCollection<object>
. Donc même si j'utilise la réflexion pour appeler la méthode CopyTo, j'ai encore besoin de connaître le type spécifique de ReadOnlyCollection, ce que je veux éviter.
Je veux savoir comment extraire tous les éléments de ReadOnlyCollection sous la forme d'un tableau de références d'objet sans avoir à connaître le type spécifique (T) du ReadOnlyCollection<T>
.
Problème est la première ligne ne compilera pas parce que vous ne pouvez pas convertir de IEnumerable à ICollection. – hkdk3107
Modifié. Doit avoir été une faute de frappe difficile à repérer. – erikkallen
Cette solution est très soignée car elle ne se soucie pas du tout des génériques. – hkdk3107