Extension Methods di VB 9.0

VB - .NET Framework , Posted at : Oct/09/2007  
1729 Views   0 Comments

Pernahkah kita bayangkan untuk extended sebuah type lewat type baru tanpa harus inherits dari type tersebut? Atau misalkan sebuah type yang kita buat ingin menggunakan semua fungsionalitas yang terdapat di dalam type tersebut tanpa harus melakukan inheritance? Bukan suatu cara yang effektif kalau kita harus selalu melakukan pewarisan kalau member yang di extend hanya beberapa member saja.

Dengan Extension Methods seorang programmer tidak perlu lagi untuk repot-repot melakukan hal yang saya sebutkan diatas. Kita dapat melakukan ekstensifikasi type dengan menambahkan member baru tanpa harus membuat type baru dengan inheritance. Ekstensifikasi ini dapat dilakukan terhadap Reference dan Value type. 

Extension Method di VB.NET harus dideklarasikan didalam Module, tidak dapat dideklarasikan didalam sebuah class. Module dan member yang akan dijadikan sebagai Extension Methods harus diberi atribute <Extension()>. Atribute class tersebut berada di dalam namespace "System.Runtime.CompilerServices", jadi namespace tersebut harus di Imports terlebih dahulu atau menggunakan Fully Qualified Namespace.

Saya akan membuat contoh sederhana untuk mengaplikasikan Extension Methods ini. Misalkan saya akan extend member baru untuk tipe data DateTime. Member yang akan saya tambahkan yaitu berupa fungsi yang akan mengembalikan format tanggal berupa string yang formatnya kita tentukan. Berikut kode nya :

   1:  Imports System.Runtime.CompilerServices
   2:   
   3:  <Extension()> _
   4:  Module MyExtensionMethods
   5:   
   6:      Private Const ddMMyyyy As String = "dd/MM/yyyy"
   7:      Private Const ddMMMyyyy As String = "dd/MMM/yyyy"
   8:      Private Const ddMMMMyyyy As String = "dd/MMMM/yyyy"
   9:   
  10:      <Extension()> _
  11:      Public Function MonthInTwo(ByVal Tanggal As DateTime) As String
  12:          Return Format(Tanggal, ddMMyyyy)
  13:      End Function
  14:   
  15:      <Extension()> _
  16:      Public Function MonthInThree(ByVal Tanggal As DateTime) As String
  17:          Return Format(Tanggal, ddMMMyyyy)
  18:      End Function
  19:   
  20:      <Extension()> _
  21:      Public Function MonthInFour(ByVal Tanggal As DateTime) As String
  22:          Return Format(Tanggal, ddMMMMyyyy)
  23:      End Function
  24:   
  25:  End Module

Semua member yang akan dijadikan sebagai Extension Methods diberi atribut <Extension()> begitu juga dengan deklarasi modulnya. Code di atas melakukan ekstensifikasi member untuk tipe data DateTime dengan menambahkan fungsi baru yang akan mengembalikan nilai tanggal dengan format yang sudah ditentukan. Untuk menggunakan Extension Methods tersebut dari sebuah class atau modul, kita harus melakukan Imports terlebih dahulu ke Namespace type yang bersangkutan, berikut kode penggunaannya :

   1:  Imports System.Windows.Forms
   2:  Imports NewInVB90.MyExtensionMethods
   3:   
   4:  Module NewInVB90
   5:   
   6:      Sub Main()
   7:          Dim myDate As DateTime = Now
   8:          MessageBox.Show(myDate.MonthInTwo, "Extension Methods")
   9:          MessageBox.Show(myDate.MonthInThree, "Extension Methods")
  10:          MessageBox.Show(myDate.MonthInFour, "Extension Methods")
  11:      End Sub
  12:   
  13:  End Module

Dari kode di atas dapat kita lihat hasil dari ekstensifikasi method yang dilakukan terhadap tipe data DateTime akan muncul di jendela Intellisense nya...Fitur yang menarik bukan :)


[Comments]

[Write your comment]
Name (required)
Email (required-will not published)
 
Comment

9023
Input code above below (Case Sensitive) :
About Me 
Rully Yulian MF
My Name is Rully Yulian Muhammad Firmansyah. I am an IT Trainer, IT Consultant and Application Developer spesializing in Microsoft .NET technology and SQL Server database. I live in Bandung, Indonesia. My hobby is to play Guitar. [Read More...]
Top Download 
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 3175 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 2592 times  
Mapping Hak Akses User Pada MenuStrip Sampai Control Button : Downloaded 2180 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 2127 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 1806 times  
Article Category 
Links 
Award 
Certifications 
MOS 2007
MCAS
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise 
Follow Me 
Facebook   LinkedIn   Twitter
Syndication 
Hosted By 
Native Enterprise News