Extensions Methods bestaan al sinds VB 9.0. Ik ga niet in detail bespreken hoe extensions werken, maar vooral laten zien, wat je er mee kan en hoe je dit in de praktijk kan toepassen. Extensions methods stellen je in staat om types uit te breiden met een routine of een functie. Aangezien deze omschrijving het wellicht niet duidelijker maakt, gaan we dit aan de hand 2 voorbeelden proberen duidelijk te maken.
Eerst een aantal zaken waar je op moet letten bij het maken van een extension:
- Extensions moeten worden aangemaakt in een Module.
- Elke functie of routine krijgt een attribute <Extension()>, dit attribute zit in de namespace System.Runtime.CompilerServices
- De eerste parameter van de functie is het type wat we gaan uitbreiden (Deze wordt verderop uitgelegd)
Voorbeeld 1:
Binnen een webapplicatie willen we de invoer van een gebruiker eerst encoden voordat we deze op onze pagina laten zien. We kunnen voor elke String schrijven:
1: Dim gevaarlijkeTekst = "<script>alert('evil script')</script>"
2: Response.Write(HttpUtility.HtmlEncode(gevaarlijkeTekst))
Aangezien we heel veel velden hebben, die elke keer ge-encode moeten worden, gaan we als luie programmeur een extension maken die dit voor ons gaat doen. We gaan het type String uitbreiden met een extension:
1: Imports System.Runtime.CompilerServices
2: Module Extensions
3: <Extension()> _
4: Public Function ToEncodedString(text As String) As String
5: Return HttpUtility.HtmlEncode(text)
6: End Function
7: End Module
In Visual Studio krijg je bij intellisense nu een extra methode op het type
String te herkennen aan de blauwe pijl:

We kunnen deze extensions nu dus gebruiken op de volgende manier:
1: Dim gevaarlijkeTekst = "<script>alert('evil script')</script>"
2: Response.Write(gevaarlijkeTekst.ToEncodedString())
De eerste parameter van de functie is het type wat we gaan uitbreiden
In het eerste voorbeeld hebben we maar 1 parameter, text as String, daarmee vertellen we dat we het type String gaan uitbreiden. Een extension kan meerdere parameters hebben, maar de eerste parameter bepaald welk type we gaan uitbreiden. Een voorbeeld:
1: <Extension()> _
2: Public Sub SetNotification(ByVal session As SessionState.HttpSessionState, ByVal message As String)
3: session("NotificationMessage") = message
4: End Sub
De eerste parameter is van het type HttpSessionState, deze extensions is dus een uitbreiding op het type HttpSessionState. De tweede parameter is het bericht wat in de sessie willen stoppen. We kunnen deze extension nu dus gebruiken op de volgende manier.

Dit zijn twee praktische voorbeelden van extensions, heb jij extensions gemaakt die je met ons wilt delen, post jouw extension dan in de reacties.
Wil je meer weten over Extensions lees dan de uitgebreide blogs van het VB team van Microsoft. http://blogs.msdn.com/b/vbteam/archive/2007/01/24/articles-about-extension-methods.aspx