چقدر خوب میشد اگر،
نوع داده String دارای متدی جهت حذف تگهای HTML داشت:
string htmlStr = "<h1>.Net Tips</h1>";
htmlStr.ClearHtmlTags();
کلاس Image دارای متدی جهت تغییر اندازه (Resize) داشت:
کنترل 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();
با توجه به این مطلب توسعه پروژه ای در همین سایت با عنوان "
متدهای الحاقی " آغاز شده است. در این پروژه ضمن پوشش متدهای الحاقی پرکاربرد سعی به توسعه متدهای الحاقی داریم که بیشتر در برنامههای فارسی کاربرد دارند.