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
Version imprimable
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
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 :
En gros ce que tu cherches est impossible. Il est impossible (pour le moment :mrgreen:) de créer une méthode d'extension qui soient une méthode statique d'un type existant. :ccool:Citation:
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
C'est bien ce que je craignais... et pas moyen d'utiliser l'héritage sur une structure...
Merci de l'info h2s84.
peut etre en tentant avec partial class sinon
:lol: 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 !
Impossible de le faire à cause de ça
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. :ccool:Citation:
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.
c'est bien ce que je me disais aussi ^^
ca par contre j'en suis moins sûr, je dirais qu'une des parties a le droit de ne pas avoir partialCitation:
Toutes les parties doivent utiliser le mot clé partial.
c'est le cas pour les windows forms, le fichier designer est en partial classe, le reste n'indique pas partial
Disons que le plus simple pour gérer ce genre de truc est la création d'une class non instanciable (ou un module vu qu'on est en vb.net) avec des methodes statiques (ce qu'on appelle généralement un helper) afin de regroupper ce genre de chose.
C'est moins sexy pour l'autocompletion dans l'IDE mais je ne trouve pas mieux actuellement.