VB et les méthode d'extensions...
Par L'équipe Bewise, posté le 12/07/2010
Tags : VB.Net
Vous avez une liste, jusque là rien d'exceptionnel.
Une liste a une propriété Count, tout va bien jusqu'ici (je le précise car c'est important pour la suite et pour ceux qui ne le savent pas encore)
Vous voulez appeler la méthode d'extension Count qui va vous permettre de calculer le nombre de clients qui répondent au doux nom de « toto » :
(en C#)
customers.Count(c => c.Name == "toto");
(en VB), ca devrait NORMALEMENT ressembler à ceci :
customers.Count(Function(c As Customer) c.Name = "toto")
Eh bien vous vous mettez le doigts dans. l'oeil !
La méthode d'extension Count ne peux pas être appelée en VB, elle n'est d'ailleurs même pas visible avec l'IntelliSense à cause de la propriété Count du même nom.
Le compilateur vous sort l'erreur suivante : Property access must assign to the property or use its value.
Au final il faut écrire :
Enumerable.Count(customers, Function(c As Customer) c.Name = "toto")
Comme au bon vieux temps
Moralité de l'histoire :
Oui VB c'est de la m****,
Mais surtout : n'appelez pas vos méthodes d'extension du même nom que les propriétés de la classe étendue, sinon elles ne seront pas utilisables (de manière extensible bien sûr) en VB.
