jeudi 31 janvier 2008 06:54
redo
Nouveautés VB 2008 [VB 9.0] : Conversion simplifiée des délégués - Délégués non stricts - Relaxed Delegates
Attaquons maintenant une des nouveautés du langage Visual Basic 2005 [VB 9.0] qu'est la "Conversion simplifiée des délégués", aussi appelé "Délégués non stricts" ou si vous préférez en version US "Relaxed Delegates"
- Qu'est-ce que la Conversion simplifiée des délégués (Délégués non stricts)
La conversion simplifiée des délégués permet d'assigner des méthodes (subs, fonctions) aux délégués ou aux gestionnaires lorsque les signatures (paramètres) ne sont pas identiques.
- Exemples de Relaxed Delegates
Afin de comprendre rapidement la notion de Relaxed Delegates (conversion simplifiée des délégués). Prenons l'exemple de l'exploitation d'un évènement "Click" sur un objet de type button.
EN VB 8.0 (.NET 2.0) - VS 2005, vous obteniez le code suivant :
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
End Sub
Vous remarquez ici la signature de votre méthode qui contient un objet (sender) ainsi qu'un EventArgs (e). Cette syntaxe constitue bien un Handler valide.
L'écriture suivante engendre par contre une erreur, malgré que nous soyons sur un sous-type de l'EventArgs (précison bien que nous sommes toujours en VB 8.0) :
Il en serait de même pour tout délégué dont l'exploitation passerait par une méthode de signature différente... exemple un type Object dans la définition du délégué et un type Integer dans la méthode l'exploitant.
Observez maintenant l'équivalent en VB 9.0 (.NET 2.0) - VS 2008
L'écriture telle que recherchée et refusée en VB 8.0 engendre bien dans ce cas-ci en VB 9.0 une validation du compilateur Visual Basic.
Note : mon projet a pourtant bien pour target le .NET Framework 2.0 (cfr explications de mon post sur le multi-targetting)
Observons même l'assembly obtenue au travers de Reflector :
Surprenant non ? Et encore, nous ne sommes pas encore au bout de nos surprises, pour cause, observez, vous pourrez en arriver à l'écriture suivante :
Comme dirait "Garcimore" ... Dichparou :p ... Effectivement, vous pourrez ainsi en arriver au point de faire disparaître complètement la signature de votre méthode !
Bien entendue, il en va de même avec vos propres délégués. Attention toutefois, les délégués simplifiés vous permettent d'omettre les arguments que dans le cas de déclarations qui ne comprennent aucune ambiguïté.
Cette nouveauté vous permettra, vous l'aurez compris, d'associer par exemple à une même méthode deux Handlers dont les signatures sont différentes :
Voici quelques liens si vous souhaitez poursuivre le sujet :
Bon code
R.
Member of WygTeam
www.wygwam.com
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 :