Fitur VB9 (Extension Method)

Halo, ini adalah posting ketujuh saya tentang fitur dari VB9 yaitu Extension Method, anda dapat melihat posting saya sebelumnya:

  • Implicitly typed local vaiable
  • Object initializer
  • Anonymous types
  • Nullable types
  • If Ternary operator
  • Partial Method

Extension method digunakan untuk menambahkan method kedalam class tanpa harus menulis ulang atau mengoverride class tersebut, biasanya digunakan untuk class-class bawaan dari .NET yang kita tidak bisa memodifikasinya langsung (mis: String). Untuk menambahkan extension method anda harus menambahkan keyword <Extension()>.

Misal anda ingin membuat method untuk membalik kata, padahal pada class String belum disediakan method tersebut maka anda dapat menambahkannya dengan Extension Method.

Pada VB8 anda dapat menuliskannya sebagai berikut :

Sub Main()
   Dim nama = "Erick Kurniawan"
   Dim balikNama = BalikKata(nama).ToLower().Substring(0, 9)
   'Dim balikNama = nama.ToLower().BalikKata().Substring(0, 9)
   'Console.WriteLine(balikNama)
End Sub
 
 
Function BalikKata(ByVal kata As String) As String
   Dim kar = kata.ToCharArray()
   Array.Reverse(kar)
   Return New String(kar)
End Function

Anda harus memanggil fungsi dengan cara diatas karena memang fungsi BalikKata tidak ada dalam class String, jika anda ingin menambahkan method BalikKata dalam class String maka anda dapat menuliskan:

Imports System.Runtime.CompilerServices
 
Module ExtensionMethod
    Sub Main()
        Dim nama = "Erick Kurniawan"
        Dim balikNama = nama.ToLower().BalikKata().Substring(0, 9)
        Console.WriteLine(balikNama)
    End Sub
 
    <Extension()> _
    Function BalikKata(ByVal kata As String) As String
        Dim kar = kata.ToCharArray()
        Array.Reverse(kar)
        Return New String(kar)
    End Function
End Module

Dengan menggunakan extension method anda dapat melakukan penulisan dengan cara “chaining” yang akan terasa lebih natural:

image

Dim balikNama = nama.ToLower().BalikKata().Substring(0, 9)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s