Skip to main content

Introduction to Extension methods

අද අපි කතා කරන්න ලෑස්ති වෙන්නේ C# වල තියෙන අපිට ප්‍රයෝජනවත් වෙන තවත් feature එකක් ගැන. ඒ තමා මේ Extension Methods.

අපි පුරුදු විදිහටම සරල උදාහරණයක්‌ එක්කම මේක පටන් ගමු.

 using System;  
 namespace ExtensionTest  
 {  
   static class ExtensionMethods  
   {  
     public static int GetSquaredValue(this int num)  
     {  
       return num * num;  
     }  
   }  
   class Program  
   {  
     static void Main(string[] args)  
     {  
       int i = 20;  
       int squaredValue = i.GetSquaredValue();  
       Console.WriteLine("The squared value of {0} is {1}.",i,squaredValue);  
     }     
   }  
 }  

දැන් බලමු මොකක්ද මෙතන ඇත්තටම සිද්ද වෙන්නේ කියල. ඕනේ නම් මේ code එක run කරලා බලන්නකො වැඩ කරනවා ද කියල.
  1. මුලින්ම අපි කරලා තියෙන්නේ static class එකක් declare කරනවා අපේ Extension method එක ලියාගන්න.
  2. ඊට පස්සේ අපි කරන්නේ අපේ Extension method එක ලියාගන්නවා මේ class එක ඇතුලේ. මෙතන අපි ගන්නේ ඉලක්කමක වර්ගය හොයාගන්න පුළුවන් method එකක් GetSquaredValue කියල නේ නම දාල තියෙන්නෙත්.
  3. දැන් අපි පොඩ්ඩක් බලමු මේ method එකේ signature දිහා. මේකේ තියන පලවෙනි parameter එකෙන් කියවෙන්නේ මේ method එක අදාළ වෙන්නේ මොන data type එකටද කියන එක. දැන් මේකේ හැටියට නම් මේ method එක අදාල වෙන්නේ int වලට තමා.  ඒ වගේම පලවෙනි parameter එකට ඉස්සරහින් this කියන keyword එක අනිවාර්යෙන්ම දාන්න ඕනෙ. (හැබැයි අපේ method එකේ තියෙන්නේ එක parameter එකයි උනාට, සාමාන්‍ය method එකක වගේ මේකටත් ඕනේ තරම් parameters තියෙන්න පුළුවන්).
  4. ඊට පස්සේ ඉතින් method එක ඇතුලේ අපිට වෙන්න ඕනෙ වැඩේ කරන්න ඕනෙ. දැන් මේකේ හැටියට නම් අපි ඉලක්කමේ වර්ගය හොයාගන්න පොඩි code එකක් ලියල තියෙනවා.
  5. දැන් බලමු මේක call කරගන්නේ කොහොමද කියල. අපි සාමාන්‍ය int variable එකක් declare කලාම ඒකේ methods list එකට මේ Extension method එකත් ඇවිල්ල තියෙනවා ඔයාලට පෙනෙයි.
  6. Calling Extension method
  7. ඒක call කලාම ඉතින් result එක හම්බ වෙනවා.  මෙතන වැදගත් දෙයක් තමා අපි පලවෙනි parameter එක pass කරන්න ඕනෙ වෙන්නේ නෑ. ඒ මොකද අපි මේක call කරන variable එකේ value එක පලවෙනි parameter එක විදිහට automatically pass වෙනවා.
ඉතින් අපි මේ වැඩේ ලොකු project එකක එහෙම කරනවා නම් මේ අපේ Extension method එක define කරලා තියෙන class එක අපිට පුළුවන් වෙනම dll එකක තියාගෙන, ඒ dll එකට reference දාගෙන පාවිච්චි කරන්න.

මොනවා හරි අවුල් තියෙනවා නම් ඉතින් අහන්න.

Comments

Popular posts from this blog

HTML INPUT enhancement with Regular Expressions and Java Scripts

අද කථා කරන්න යන්නේ බොහොම සරල දෙයක් ගැන. සරල උනාට ඉතින් මට මේක කරගන්න ඕන වෙලා හොයන කොට නම් ඉතින් හොයාගන්න ටිකක් කරදර උනා, ඒ නිසාම තමා මම හිතුවේ මේක ගැන ලියන්න ඕනෙ කියල. අපි හැමෝම HTML forms validate කරන්න Java Script පාවිච්චි කරනවා නේ, එක අලුත් දෙයක් නෙමේ. ඒ වගේම තමා Regular Expressions කියන්නෙත් අපිට අලුත් දෙයක් නෙමේ. අපි බලමු මේ දෙකම පාවිච්චි කරලා HTML textbox එකකට අපිට ඕනෙ characters විතරක් enter කරන්න දෙන්නේ කොහොමද කියල. මෙන්න මේක තමා අපි පාවිච්චි කරන HTML page එක. <!DOCTYPE html> <html> <head> <title>JS and RegEx</title> </head> <body> <label for="txtUsername">Username</lable> <input type="text" id="txtUsername" placeholder="Enter Username"/> </body> </html> මේ තියෙන page එක html විදිහට save කරලා browser එකේ බැලුවම මෙන්න මේ වගේ තමා පෙන්නේ. දැන් හිතන්න අපිට මේ username එකට @,#,%,$ වගේ...

Applying Themes for Silverlight 4

ටික දවසකට පස්සේ ලියන්න හොඳ දෙයක් එක්ක වෙලාවක් හම්බ උනා. මේ දවස් වල මම පොඩි අත්හදා බැලීමක් කරනවා Silverlight 4 එක්ක. Visual Studio 2010 තමා පාවිච්චි කරන්නේ. හැබැයි එක හිතපු තරම් ලේසි උනේ නෑ. ඒ නිසා මම හිතුවා ඒ ගැන පොඩ්ඩක් ලියන්න. මුලින්ම කියන්න තියෙන්නේ Silverlight 4 එක්ක වැඩ කරන්න නම් VS 2010 විතරක් තිබුනට මදි, ඒකට ඔයාලට ඕනෙ වෙනවා VS2010 Service Pack 1. ඒක download කරගන්න පුළුවන් මෙන්න මේ ලින්ක් එකෙන්. මෙතන ඇත්තටම තියෙන්නේ ISO image එකක්, ඒක mount කරලා install කළා නම් වැඩේ ගොඩ. ඊට පස්සේ අපි බලමු කොහෙන්ද මේ Themes හොයාගන්න පුළුවන් කියල. ඒකට යන්න මෙන්න මේ ලින්ක් ඒකට, එතන තියෙන " SL4Themes-templates.zip " කියන file එක download කරගන්න. මේ themes Microsoft එකෙන් officially release කරලා තියෙන themes වගයක්. ඇත්තටම මේ download එකේ තියෙන්නේ Project Templates. දැන් කරන්න තියෙන්නේ මේක Unzip කරලා VisualStudio2010 කියන folder එක ඇතුලේ තියෙන JetPack.vsix වගේ file එකක් double click කරන එක. එකෙන් පොඩි Installer එකක් දුවලා install වෙනවා Visual Studion Project Template එකක්. දැන් ක...

Simple Data Binding in WPF

අපි කලින් ලියුමක WPF වල layouts ලේසියෙන් හදාගන්නේ කොහොමද කියල බැලුවා කට්ටියට මතක ඇති නේද. ඉතින් අද අපි බලන්න යන්නේ මෙතනින් තව පොඩ්ඩක් ඉස්සරහට යන්නේ කොහොමද කියල. ඒ කියන්න අද අපි බලමු අපි මේ හදාගත්ත client window එක කොහොමද අපේ business layer එකත් එක්ක connect කරන්නේ කියල. ඒකට තියෙන සරලම සහ හොඳම විදිහ තමා මේ Data Binding කියල කියන්නේ. Data Binding වලින් අපිට පුළුවන් අපේ Business Layer එකයි UI එකයි අතරේ data auto update කරන්න. Data Binding කොටස් දෙකක් තියෙනවා Unidirectional කියන්නේ source එකේ ඉඳල target එකට හරි target එකේ ඉඳල source එකට හරි එක පැත්තකට විතරක් data update වෙන එකට. Bidirectional කියන්නේ source එකෙන් target එකටයි target එකෙන් source එකයි දෙපැත්තටම data update වෙන එකට. ඒ වගේම binding target එක හැම වෙලේම DependencyProperty එකක් වෙන්න ඕනෙ.(DependencyProperty එකක් කියන්නේ සරලව ගත්තොත් object එකක අපිට runtime එකේදී වෙනස් කරන්න පුළුවන් property එකක්.) ඉස්සෙල්ලම අපි මෙන්න මේ පහල තියෙන Window එක හදාගෙන ඉමු. මේකට ඕනෙ කරන XAML markup එක තමා පහල තියෙන්නේ. <Windo...