Extension Method di C#

Di bahasa pemrograman C# yang konsepnya object oriented ini ada salah satu fitur unik namanya extension method, fitur ini memungkinkan kita membuat method tambahan untuk sebuah class tapi didefinisikan dari luar class tersebut. Manfaat dari fitur ini contohnya jika kita ingin menambahkan method pada sebuah class tapi tidak kita punya source class tersebut untuk direcompile. Namun seiring konsep enkapsulasi pada OOP, method yang dibuat di luar ini tidak bisa memanggil private variable atau method dari class yang diextend karena sifat fitur ini sebagai syntactic sugar sehingga walaupun di kode dipanggilnya seperti method biasa tapi sebenarnya manggil static method dari static class lain dimana ia didefinisikan.

Untuk menggunakannya, tipe class yang mendefinisikannya dan jenis methodnya harus static dengan parameter pertama diawali keyword “this” diikuti nama class yang ingin diextend. Sebagai contoh method di bawah ini saya ingin menambahkan method ToAlay() pada setiap instance dari object string.

namespace StrUtil
{
  using System;

  public static class StrUtil
  {
    public static string ToAlay(this string str)
    {
      return str.Replace("o", "0")
                .Replace("i", "1")
                .Replace("z", "2")
                .Replace("e", "3")
                .Replace("a", "4")
                .Replace("s", "5")
                .Replace("g", "6")
                .Replace("j", "7")
                .Replace("b", "8")
                .Replace("q", "9");
    }
  }
}

Di Visual Studio dengan fitur IntelliSense-nya kita bisa melihat tambahan method baru ini akan selalu muncul pada instance yg classnya diextend (di contoh ini class string).

Disini saya membuat program console yang outputnya adalah hasil string yang sudah di ToAlay()-kan

namespace Program
{
  using System;
  using StrUtil;

  class Program
  {
    static void Main(string[] args)
    {
      string s = "The quick brown fox jumps over the lazy dog";
      string a = s.ToAlay();
      Console.WriteLine(a);
      Console.ReadLine();
    }
  }
}

Apa yang akan terjadi kalau saya tekan F5? ini dia:

Cukup M3n4r1k k4n? h3h3.. yah d3m1k14nl4h m0h0n m44f k4l4u 4d4 y6 54l4h, 1n1 7u64 m451h 83l474r 😛

Untuk referensi lebih lanjut mengenai extension method di C# silakan hubungi dokter: http://msdn.microsoft.com/en-us/library/bb383977.aspx

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s