متدهای الحاقی - Extension Methods
دوشنبه 16 اردیبهشت 1392متدهای الحاقی - Extension Methods <br/> چقدر خوب میشد اگر نوع داده String دارای متدی جهت حذف تگهای HTML داشت
چقدر خوب میشد اگر،
کلاس Image دارای متدی جهت تغییر اندازه (Resize) داشت:
نوع داده String دارای متدی جهت حذف تگهای HTML داشت:
string htmlStr = "<h1>.Net Tips</h1>"; htmlStr.ClearHtmlTags();
image1.Resize(50, 80);
کنترل DropDownList متدی جهت انقیاد دادهها داشت:
dropDownList1.Bind((List<Category>)categories, "Name", "Id");
متدهای الحاقی به همین منظور متولد شده اند. در واقع هر زمان بدنه کلاسی (نوع داده، کنترل و تمام اشیاء دات نتی) در اختیار ما نباشد امکان اضافه کردن متدهای الحاقی به آنها وجود دارد. برای این منظور کافیست چند نکته را رعایت کنید:
- کلاس دربرگیرنده متد یا متدهای الحاقی باید Public و Static باشد.
- متد الحاقی باید Public و Static باشد.
- اولین پارامتر متد الحاقی باید با کلمه کلیدی this همراه باشد و این پارامتر اشاره به کلاسی دارد که متد جاری به آن الحاق (یا ضمیمه) خواهد شد.
یک مثال:
در این مثال متدالحاقی برای بهبود نوع داده String را خواهیم دید. وظیفهی این متد شمارش تعداد کلمات موجود در رشته است.
public static class StringExtensions { /// <summary> /// Count all words in a given string /// </summary> /// <param name="input">string to begin with</param> /// <returns>int</returns> public static int WordCount(this string input) { var count = 0; try { // Exclude whitespaces, Tabs and line breaks var re = new Regex(@"[^\s]+"); var matches = re.Matches(input); count = matches.Count; } catch (Exception) { return -1; } return count; } }
نحوه استفاده:
var s = "i Love Dot Net Tips."; var wordCount = s.WordCount();
در ضمن وب سایتی جهت به اشتراک گذاری این متدها به عنوان یکی از بهترین مراجع در دسترس است: http://extensionmethod.net
با توجه به این مطلب توسعه پروژه ای در همین سایت با عنوان "متدهای الحاقی " آغاز شده است. در این پروژه ضمن پوشش متدهای الحاقی پرکاربرد سعی به توسعه متدهای الحاقی داریم که بیشتر در برنامههای فارسی کاربرد دارند.
- C#.net
- 2k بازدید
- 0 تشکر