Extension method چیست

بالاخره بعد از چند مطلب پایه ای در زمینه Linq به یک بحث پرکاربرد و دوست داشتنی رسیدیم – هر چند که مطلب قبلی در زمینه عبارت های lambda نیز کاربردی بود.

نکته : رئوس این مطالب از یک کتاب تهیه شده و برای درک بهتر باید مطالب قبل را نیز مطالعه کنید.

بحث امروز درباره extension method می باشد و از آنجا که این قابلیت کدنویسی را آسانتر کرده و قابلیت های ارزشمندی به برنامه نویس می دهد ، آنرا بصورت ویژه بررسی خواهیم کرد

Extension method (متدهای الحاقی) چیست ؟

Extension method ها توابع static  در درون کلاس های static می باشد که به شما امکان می دهد تا متود استاتیک دلخواه را در یک کلاس کمکی ایجاد کرده و آنها را به فهرست متدهای یک کلاس دیگر اضافه کرد بدون آن که مجبور به دستکاری کلاس اصلی شوید.

فکر کنید چقدر خوب بود که نوع داده String دارای متدی جهت حذف تگ‌های HTML داشت و یا کلاس Image دارای متدی جهت تغییر اندازه (Resize) داشت و …

 Extension method ها به همین منظور متولد شده اند. در واقع هر زمان بدنه کلاسی (DataType، کنترل و تمام اشیاء دات نتی) در اختیار ما نباشد امکان اضافه کردن متد الحاقی به آنها وجود دارد.

برای نوشتن Extension method ها باید موارد زیر را مد نظر داشته باشید

1- این توابع بصورت public static تعریف شوند.

2- کلاسی که این متد در داخل آن تعریف می شود نیز باید بصورت public static تعریف شود.

3- اولین پارامتر ورودی این توابع باید با کلمه کلیدی this همراه باشد و این پارامتر اشاره به کلاسی دارد که متد جاری به آن الحاق (یا ضمیمه) خواهد شد.

 یک مثال

public static class  MyExtensions

{

public static int WordCount(this String str)

{

return str.Split(new char[] { ‘ ‘, ‘.’, ‘,’ }).Length;

}

}

و فراخوانی آن :

class Program

{

public static void Main()

{

string s = “What is Extension Method in RTWO.ir “;

int i = s.WordCount();

Console.WriteLine(i);

}

}

نکته : extension method نمی تواند یک متد موجود در کلاس اصلی را override کند .

معرفی یک پروژه و یک سایت

یک پروژه برای پوشش متدهای الحاقی پرکاربرد :  http://dntextensions.codeplex.com

و سايت ExtensionMethod.NET بانك اطلاعاتي برای extension methodها می باشد .

اگه کمی فکر کنید و آن پروژه معرفی شده را بررسی نمایید می توانید با استفاده از متدهای الحاقی قدرت زیادی به کدنویسی خودتان بدهید و آسانتر کدنویسی کنید

درباره‌ رضا رحیمی

رضا رحیمی
در زندگی‌ام هیچ‌چیز را هیجان‌انگیزتر از آموختن نمی‌دانم . به xp , اسکرام ، تست ، برنامه نویسی ، تدریس ، تجارت های آنلاین و هر آنچه که به اینترنت مربوط می باشد علاقمندم. این سایت محل یادداشت های شخصی بنده می باشد

جوابی بنویسید

ایمیل شما نشر نخواهد شدخانه های ضروری نشانه گذاری شده است. *

*