extention method برای توسعه یک dll یا مدلهای برنامه که از قبل ایجاد شده و برنامه نویس قادر به دسرسی یا تغییر سورس آن ندارد میتواند مورد استفاده قرار گیرد.
بعنوان مثال همانطور که می دانیم DateTime برای کار با تاریخ میلادی در دات نت تهیه شده است و در این کلاس تابعی برای تبدیل آن به تاریخ شمسی وجود ندارد. اما کلاس PersianCalendar میتواند این تبدیلات را انجام دهد .
ما برای راحتی کار از Extention method استفاده میکنیم تا بتوانیم تابعی را برای انواع Datetime ایجاد نماییم . در اینصورت با فراخوانی مستقیم تابع نوع شمسی مورد نظر ما بدست خواهد امد
برای ایجاد Extention method ها باید از یک کلاس static استفاده نماییم و سپس متد مورد نظر را درون آن بنویسیم. به قطعه کد زیر توجه نمایید.
public static class ExtentionClass1
{
public static string ToShamsi(this DateTime dt)
{
System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
int y = pc.GetYear(dt);
int moth = pc.GetMonth(dt);
int day = pc.GetDayOfMonth(dt);
return y.ToString()+"/"+moth.ToString()+"/"+day.ToString();
}
به تابع ToShamsi توجه نمایید . این تابع بصورت static تعریف شده است و نکته مهمتر اینکه به ابتدای آرگومان آن کلمه this اضافه شده است و مفهوم آن این میباشد که این تابع به نوع DateTime اضافه شده است و خروجی آن تاریخ شمسی بصورت رشته ای می باشد. بنابراین تابع ToShamsi در حین استفاده نیازی به ارگومان ندارد. با توجه به قطعه کد زیر
DateTime dt = new DateTime();
dt = DateTime.Now;
Console.Write(dt.ToShamsi());
سورس برنامه را از قسمت فایلهای ضمیمه شده دانلود نمایید