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 එකට @,#,%,$ වගේ...

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...

Using BackgroundWorker in C#

අපි අද කතා කරන්න හදන්නේ තවත් අපිට ගොඩක් ප්‍රයෝජනවත් වෙන C# වල තියෙන feature එකක් ගැන. ඒ තමා මේ BackgroundWorker කියන component එක, මේක පාවිච්චි කරලා අපිට පුළුවන් අපේ programs වලට Threads හදාගන්න. අපි සාමාන්‍යයෙන් Threads පාවිච්චි කරන්නේ මොකක් හරි ගොඩක් වෙලා යන වැඩක් program එකෙන් කරද්දී ඒ වැඩේ program එක පාවිච්චි කරන කෙනාට එහෙම නැත්නම් User ට නොතේරෙන විදියට කරගන්න, උදාහරණයක් විදියට අපි database එකකට connect වෙලා data set එකක් fetch කරනවා කියල හිතන්න මේ වැඩේට ලොකු වෙලාවක් යනවා නම් User හිතෙන්නේ program එක හිර වෙලා කියල. ඉතින් මෙන්න මේ ප්‍රශ්නේ විසඳා ගන්න පුළුවන් අපිට BackgroundWorker එක පාවිච්චි කරලා. ඒ කියන්නේ පොඩි Progress Bar එකක් වගේ දෙයක් පෙන්නලා user ට කියන්න පුළුවන් වැඩේ ඇතුලෙන් කෙරෙනවා කියලා. හරි අපි පටන් ගමු, මුලින්ම කරන්න තියෙන්නේ Visual Studio වලින් Windows Forms Application එකක් හදාගන්න එක. ඊට පස්සේ සාමාන්‍යයෙන් ඔයාලගේ right hand side එකේ Tool Box එක දිහා බැලුවම පෙනෙයි මෙන්න මේ වගේ මෙතන අපිට පේනවා BackgroundWorker කියල tool එකක් තියෙනවා, දැන් මේක drag කරලා drop ක...