J'ai parcouru certains Documentations MSDN . J'ai trouvé des méthodes d'extension également documentées là-bas. P>
Je n'ai pas compris, pourquoi ces bibliothèques de classe de base ont des méthodes d'extension? Quand ils auraient pu être ajoutés à cette bibliothèque de classe elle-même? p>
Quel est l'avantage? différence? P>
4 Réponses :
Les méthodes d'extension comme nom suggère étend la fonctionnalité ou la convivialité du type cible. p>
L'utilisation correcte des méthodes d'extension peut éliminer l'encombrement orthogonal de la définition / mise en oeuvre de type réelle (au lieu de la mise au point de la fonctionnalité de base du type dans la définition de type). P>
Prenez l'exemple de Linq - en fournissant des méthodes d'extension à iEnumerable code>, il pourrait cibler un grand nombre de types déjà publiés (et un grand nombre de types pouvant écrire à l'avenir); Il a une préoccupation orthogonale séparée, telle que l'interrogation du type du type réel. p>
L'article 3 sur votre liste est complètement faux. Il défend complètement la mécanique des méthodes d'extension décrites dans votre "alternative". De plus, qu'entendez-vous par «interrogant le type du type actuel»?
@ A.R., Vous devez peut-être expliquer un peu ce qui est faux i> in # 3. Un bon exemple pour # 3 est ienumerable
@Ar, en outre, j'avais utilisé le terme "préoccupation orthogonale telle que l'interrogation du type du type" dans le contexte de ienumerable code> - cela signifie simplement que différentes collections telles que le dictionnaire, la liste, la file d'attente, Set, Stack, etc. ne doit pas nécessairement mettre en œuvre diverses méthodes de requête (joindre, compter, premier, dernier, etc.). Cette logique n'est vraiment pas la principale préoccupation de ces classes.
L'alternative réelle consiste à écrire une méthode statique qui prend une instance «ienumeralbe
Votre dernier point sur Linq et explication pour cela n'a aucun sens. Vous suggérez que des méthodes de vulgarisation «fournissent la mise en œuvre» sur ces types de collecte et que ce n'est pas quelles méthodes d'extension font.
@ A.R., Les méthodes d'assistance statique auraient pu être écrites depuis .net 1.0. L'idée même des méthodes de vulgarisation est qu'elles semblent faire partie de (membre de) type! Donc, pour max code> une partie de l'interface
iEnumerable
Les méthodes d'extension documentées sont définies sur Ils sont documentés pour que vous sachiez que vous pouvez les utiliser. P>
comme méthodes d'extension, ils finissent par extension tout type em> implémentant cette interface, gratuitement. P> ienumerable
ObjectSet
Remarque, que de nombreuses ces méthodes fonctionnent sur des interfaces, qui constitue une excuse parfaitement légitime d'utiliser des méthodes d'extension, même pour Microsoft, car les interfaces elles-mêmes ne peuvent avoir aucune mise en œuvre de méthodes. P>
Je pense que c'est la plus probablement un "problème de marketing". La façon de conseiller code> BCL code> consommateur (US) à utiliser des méthodes d'extension, où nous en avons besoin. p>
du point de vue de la convivialité, il y a aucune bonté em>, imo, de les intégrer dans BCL code> p> p>