Extension in C#

11Dec12

Pernah lihat method seperti string.substring() atau sebuah variable memiliki sebuah method seperti vaiabelTest.toString(). Extension itu fungsinya seperti itu. Sebuah method static bisa di inject kedalam sebuah variable.

Syarat-syarat buat extension :

  • Class DAN Method Harus STATIC
  • Parameter variable HARUS ADA THIS
  • EXTENSION tidak berlaku di class yang menggunakan GENERIC

Contoh class static yang biasanya kita buat :

Namespace Helper 
{
 public static class StaticClass
 {
    public static void print(string statement)
   {
       Console.Write(statement);    
   }
 }
}

Contoh class static sebagai extension:


 public <b>static</b> class ExtensionClass
 {
    public <b>static</b> void print(<b>this</b>string statement)
   {
       Console.Write(statement);    
   }

   public <b>static</b> void jumlah(<b>this</b>int a, int b=0)
   {
       Console.Write(a + b);    
   }
 }

MainClass

 using Helper;
 public  class MainClass
 {
    public static void Main()
   {
       string statement = "Program";
       int a = 5;
       int b = 7;
       //Kalau menggunakan Static Class seperti pada kelas StaticClass
       StaticClass.print(statement);
       
       //Kalau menggunakan Extenstion seperti pada kelas ExtensionClass
      statement.print();
      a.jumlah(b);
   }
 }

NB : Kalau method extension dengan namespace berbeda, kita tinggal menambahkan namespace-nya saja dengan menggunakan keyword using NamaNamespace di luar class.

Bagaimana jika extensionnya memiliki parameter ?
Lihat saja contoh method jumlah di ExtensionClass. Analoginya seperti string.subString(0,1) yang artinya dimulai dari index ke-0 dan hanya 1 karakter saja diambil. Kalau method jumlah, variable a akan dijumlahkan dengan variable b dan variable b bersifat opsional.Bisa di isi atau tidak.

Jadi variabel yang ingin di inject dalam method harus menggunakan this dan hanya boleh satu variabel dan posisi variabel this harus yang pertama atau diawal. Parameter lainnya tinggal ditambahin saja.

Semoga bermanfaat. 😀

Advertisements


No Responses Yet to “Extension in C#”

  1. Leave a Comment

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s


%d bloggers like this: