අද අපි කතා කරන්න ලෑස්ති වෙන්නේ C# වල තියෙන අපිට ප්රයෝජනවත් වෙන තවත් feature එකක් ගැන. ඒ තමා මේ Extension Methods.
අපි පුරුදු විදිහටම සරල උදාහරණයක් එක්කම මේක පටන් ගමු.
දැන් බලමු මොකක්ද මෙතන ඇත්තටම සිද්ද වෙන්නේ කියල. ඕනේ නම් මේ code එක run කරලා බලන්නකො වැඩ කරනවා ද කියල.
අපි පුරුදු විදිහටම සරල උදාහරණයක් එක්කම මේක පටන් ගමු.
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 කරලා බලන්නකො වැඩ කරනවා ද කියල.
- මුලින්ම අපි කරලා තියෙන්නේ static class එකක් declare කරනවා අපේ Extension method එක ලියාගන්න.
- ඊට පස්සේ අපි කරන්නේ අපේ Extension method එක ලියාගන්නවා මේ class එක ඇතුලේ. මෙතන අපි ගන්නේ ඉලක්කමක වර්ගය හොයාගන්න පුළුවන් method එකක් GetSquaredValue කියල නේ නම දාල තියෙන්නෙත්.
- දැන් අපි පොඩ්ඩක් බලමු මේ method එකේ signature දිහා. මේකේ තියන පලවෙනි parameter එකෙන් කියවෙන්නේ මේ method එක අදාළ වෙන්නේ මොන data type එකටද කියන එක. දැන් මේකේ හැටියට නම් මේ method එක අදාල වෙන්නේ int වලට තමා. ඒ වගේම පලවෙනි parameter එකට ඉස්සරහින් this කියන keyword එක අනිවාර්යෙන්ම දාන්න ඕනෙ. (හැබැයි අපේ method එකේ තියෙන්නේ එක parameter එකයි උනාට, සාමාන්ය method එකක වගේ මේකටත් ඕනේ තරම් parameters තියෙන්න පුළුවන්).
- ඊට පස්සේ ඉතින් method එක ඇතුලේ අපිට වෙන්න ඕනෙ වැඩේ කරන්න ඕනෙ. දැන් මේකේ හැටියට නම් අපි ඉලක්කමේ වර්ගය හොයාගන්න පොඩි code එකක් ලියල තියෙනවා.
- දැන් බලමු මේක call කරගන්නේ කොහොමද කියල. අපි සාමාන්ය int variable එකක් declare කලාම ඒකේ methods list එකට මේ Extension method එකත් ඇවිල්ල තියෙනවා ඔයාලට පෙනෙයි.
- ඒක call කලාම ඉතින් result එක හම්බ වෙනවා. මෙතන වැදගත් දෙයක් තමා අපි පලවෙනි parameter එක pass කරන්න ඕනෙ වෙන්නේ නෑ. ඒ මොකද අපි මේක call කරන variable එකේ value එක පලවෙනි parameter එක විදිහට automatically pass වෙනවා.
Calling Extension method |
ඉතින් අපි මේ වැඩේ ලොකු project එකක එහෙම කරනවා නම් මේ අපේ Extension method එක define කරලා තියෙන class එක අපිට පුළුවන් වෙනම dll එකක තියාගෙන, ඒ dll එකට reference දාගෙන පාවිච්චි කරන්න.
මොනවා හරි අවුල් තියෙනවා නම් ඉතින් අහන්න.
Comments
Post a Comment