PropertyInfo.GetValue() - comment avez-vous indice dans un paramètre générique à l'aide de la réflexion en C#?
Ce (raccourcie) code..
for (int i = 0; i < count; i++)
{
object obj = propertyInfo.GetValue(Tcurrent, new object[] { i });
}
.. est en train de lancer un "TargetParameterCountException : Paramètre nombre incompatibilité' exception.
Le type sous-jacent de "propertyInfo' est une Collection de T. 'count' est le nombre d'éléments dans la collection. J'ai besoin d'itérer à travers la collecte et l'exécution d'une opération sur l'obj.
Conseils appréciés.
OriginalL'auteur flesh | 2009-06-01
Vous devez vous connecter pour publier un commentaire.
Réflexion ne fonctionne que sur un seul niveau à la fois.
Vous essayez d'index dans la propriété, c'est faux.
Au lieu de cela, la lecture de la valeur de la propriété, et l'objet que vous recevez, c'est l'objet dont vous avez besoin à l'index.
Voici un exemple:
Retrouvée, changé la réponse. L'attribut de la classe, et non pas sur la propriété. Notez que les classes qui n'ont pas un indexeur n'a pas l'attribut.
noté, je fais la collection de vérifier plus haut dans mon code. merci pour la mise à jour 🙂
OriginalL'auteur Lasse Vågsæther Karlsen
J'ai été la plupart du chemin jusqu'à ce que j'ai vu cela, et je vous poste ça parce que je ne l'ai pas vu nulle part ailleurs; l'essentiel est à l'aide de GetValue(collection, new Object[] { i }); dans la boucle plutôt que d'essayer d'utiliser GetValue(collection, new Object[i]); en dehors de la boucle.
(Vous pouvez probablement ignorer la "sortie" dans mon exemple);
OriginalL'auteur
OriginalL'auteur zioolek