Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Méthodes d’extensions: attention aux surprises 2/2

je reviens sur mon billet précédent en modifiant légèrement mon API:

using System;

namespace System.Data
{
    private static class Extentions
    {
        public static void DoSomething(this IDbConnection cnx)
        {
            //plein de truc à faire
        }
    }
}

J’ai modifié mon programme pour tenir compte du type renvoyé et voici ce qu’Intellisense me propose:

 

image

Mon extension n’est toujours pas là! C’est encore la même raison: l’espace de nom de l’extension n’est pas utilisé dans mon programme même si l’espace de nom de la classe SqlCommand est bien présent. Il faut donc modifier le code en ajoutant “using System.Data”:

 image

Un conseil donc: lorsque vous déclarez des méthodes d’extensions sur des interfaces ou non, bien préciser dans la documentation qu’il faut ajouter l''espace de nom correspondant!

Publié mercredi 30 septembre 2009 09:00 par Miiitch
Classé sous :
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

# re: Méthodes d’extensions: attention aux surprises 2/2

Je ne vois pas de quelle surprise tu parles... Une méthode d'extension est une méthode statique, déclarée dans une classe statique.

Si tu veux utiliser cette méthode, la classe qui l'héberge (ici, "Extensions") doit être visible comme n'importe quelle autre classe. Si elle est définie dans un namespace autre que celui à partir duquel tu veux y faire référence, alors tu dois spécifier au compilateur que tu veux utiliser ce namespace.

Quand tu utilises File.Create(), tu dois faire un using du namespace de la classe File : System.IO.

Quand tu utilises Extensions.DoSomething(), tu dois faire un using du namespace de la classe Extensions : System.Data

mercredi 30 septembre 2009 10:08 by romain verdier

# re: Méthodes d’extensions: attention aux surprises 2/2

Sur le principe je suis d'accord: lorsque l'on parle de la classe "File" on trouve facilement qu'elle vient de System.IO, mais ce n'est pas aussi évident lorsque l'on doit trouver quel using mettre pour un nom de méthode ce qui est le cas avec une méthode d'extension puisque la classe de la méthode est rarement utilisée.

Ce genre de chose ne surprend pas forcement quand on a l'expérience mais peut vite surprendre ceux qui découvrent les méthodes d'extensions: les gens s'attendent à avoir l'extension de disponible dès qu'ils utilisent la classe.

mercredi 30 septembre 2009 12:56 by Miiitch
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- SPS Paris 2015 – Back from MS Ignite par Le blog de Patrick [MVP Office 365] le 05-26-2015, 16:04

- Windows 10 IOT– exploitez vos capteurs en tout genre ! par Blog de Daniel TIZON [daniel] le 05-26-2015, 08:06

- SharePoint Saturday Paris 2015 c’est le 30 mai ! par Le blog de Patrick [MVP Office 365] le 05-25-2015, 21:07

- Configurer un écran 5 pouces 800x480 pour Raspberry Pi2 sous Windows 10 IOT par Blog de Daniel TIZON [daniel] le 05-22-2015, 07:52

- Office 365 : Sway est disponible en preview par Le petit blog de Pierre / Pierre's little blog le 05-21-2015, 22:24

- Première installation de Raspbian sur RASPBERRY Pi 2 par Blog de Daniel TIZON [daniel] le 05-14-2015, 22:17

- Mobile Day : c’est le 25 et c’est chez Microsoft! par Fathi Bellahcene le 05-13-2015, 23:48

- TFS 2013 : Migration d’une ferme TFS 2010 vers 2013 sans upgrade par Blog Technique de Romelard Fabrice le 05-01-2015, 16:28

- [ #SharePoint 2016 ] frappe à nos portes ! (1/2) par Le blog de Patrick [MVP Office 365] le 04-19-2015, 23:21

- Lync devient Skype Entreprise par Le petit blog de Pierre / Pierre's little blog le 04-18-2015, 22:47