IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Comment créer une méthode d'extension sur un type


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 102
    Par défaut Comment créer une méthode d'extension sur un type
    Bonjour,

    Peut-on créer une méthode d'extension qui serait appelée par un type et non une variable de ce type ?

    Je m'explique. J'aimerais que la méthode Tomorrow s'affiche lorsque j'écris Date. de la même façon que le .Today apparaît.


    Merci,

    Pascal

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Passepoil Voir le message
    Peut-on créer une méthode d'extension qui serait appelée par un type et non une variable de ce type ?

    Je m'explique. J'aimerais que la méthode Tomorrow s'affiche lorsque j'écris Date. de la même façon que le .Today apparaît.
    Si je reformule bien ta question c'est : comment créer des méthodes d'extension qui soient statiques (c'est à dire partager par toutes les instances de la classe) à un type existant ?

    D'après Microsoft voici la définition d'une méthode d'extension :
    Les méthodes d'extension vous permettent d'ajouter des méthodes à des types existants sans créer un type dérivé, recompiler ou modifier le type d'origine. Les méthodes d'extension sont un type particulier de méthode statique que vous appelez comme s'il s'agissait de méthodes d'instance sur le type étendu
    En gros ce que tu cherches est impossible. Il est impossible (pour le moment ) de créer une méthode d'extension qui soient une méthode statique d'un type existant.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 102
    Par défaut
    C'est bien ce que je craignais... et pas moyen d'utiliser l'héritage sur une structure...

    Merci de l'info h2s84.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    peut etre en tentant avec partial class sinon
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    non ça ne fonctionne pas ça ; ça aurait pu être intéressant (et dangereux).

    De mon côté j'ai bien tenté une Interop F# / VB.Net étant donné qu'en F# on peut étendre un type avec des membres, statiques ou pas.
    Sauf que, ce n'est pas le même type d'extension qui est utilisé, et même si on peut faire des extensions "à la VB.Net" en F# pour pouvoir l'appeler depuis VB.Net ça donne un code imbuvable (on est obligé de passer par de la reflection), et donc aisément remplaçable par une méthode statique d'une classe statique utilitaire

    Cordialement !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    peut etre en tentant avec partial class sinon
    Impossible de le faire à cause de ça
    L'utilisation du mot clé partial indique que d'autres parties de la classe, struct ou interface peuvent être définies dans l'espace de noms. Toutes les parties doivent utiliser le mot clé partial. Toutes les parties doivent être disponibles lors de la compilation pour former le type final.
    En résumé toutes les parties de la classe partielle doivent être dans le même projet avant compilation. La structure DateTime a été codée et compilée ailleurs et l'utilisateur n'a pas accès au code mis à part l'utiliser en tant que développeur.

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    En résumé toutes les parties de la classe partielle doivent être dans le même projet avant compilation.
    c'est bien ce que je me disais aussi ^^

    Toutes les parties doivent utiliser le mot clé partial.
    ca par contre j'en suis moins sûr, je dirais qu'une des parties a le droit de ne pas avoir partial
    c'est le cas pour les windows forms, le fichier designer est en partial classe, le reste n'indique pas partial
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/02/2015, 19h25
  2. Réponses: 2
    Dernier message: 17/06/2008, 09h52
  3. comment créer une extension sur Mozilla
    Par timtima dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/02/2008, 19h57
  4. Comment créer une base utilisable sur PC sans ACCESS
    Par lesalloues dans le forum Runtime
    Réponses: 4
    Dernier message: 22/08/2006, 14h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo