2010-07-24 6 views
4

J'ai une classe dans un SDK, pour laquelle chaque propriété que je suis intéressé à appeler. Je sais que le seul moyen (je pense que le seul moyen) est d'utiliser la réflexion, que la plupart des gens prétendent lente (bien que j'ai vu des articles qui illustrent comment dans certains cas ce n'est pas aussi lent que prévu).Meilleure façon d'invoquer chaque propriété dans une classe

Existe-t-il un meilleur moyen que de faire une boucle et d'invoquer chaque propriété dans la classe cible?

En outre, pourquoi la réflexion est-elle jugée si lente?

+1

Quelle est la lenteur de la réflexion? - http://stackoverflow.com/questions/771524/how-slow-is-reflection-c –

Répondre

0

Vous pouvez utiliser la réflexion pour générer du code C# accédant directement à toutes les propriétés qui vous intéressent. Ce serait une manière plus rapide d'effectuer les appels.

Je pense que la réflexion n'est pas une mauvaise option pour vous. Ce n'est pas que lent.

0

Je voudrais utiliser la réflexion pour générer le code qui appelle toutes les propriétés. Alors vous n'avez pas à vous soucier de la lenteur de la réflexion.

1

Il peut être intéressant de jeter un coup d'œil aux TypeDescriptors. Autant que je sache, ils ont des avantages de performance par rapport à l'utilisation de la réflexion et travaillent de manière légèrement différente (ils mettent en cache des métadonnées par exemple). L'article MSDN m'a confondu dans la façon dont il décrit comment la réflexion est utilisée par les descripteurs de type, donc vous pourriez avoir besoin de trouver une explication plus large (donc le 3ème lien pourrait être plus utile).

L'API pour les descripteurs de type est similaire à celle utilisée pour la réflexion.

Naviguez jusqu'à:

Soom réponses à vos questions en vrac puis: 1) En raison de la mise en cache 2) Vous pouvez récupérer les propriétés et (invoquer/définir/obtenir?) les propriétés en une seule fois. Cela peut être un cas d'appel d'une méthode de type invoke et d'écriture d'une instruction lambda pour effectuer une action sur la collection retournée?

+0

Une grande partie de l'API de réflexion met en cache les résultats et les résultats intermédiaires, la stratégie de cache pouvait être améliorée dans les premières versions, mais elle s'est beaucoup améliorée . Cochez-la: http://msdn.microsoft.com/fr-fr/magazine/cc163759.aspx – marr75

Questions connexes