توابع توسعه
بسم الله الرحمن الرحیم
ب
بسم الله الرحمن الرحیم
بسم الله الرحمن الرحیم
مشاهده تمامی آموزش های دوره LINQ
آموزش LINQ
در بعضی مواقع ممکن است شما کلاسی را داشته باشید که نتوانید از آن ارث ببرید و یا تغییری در آن ایجاد کنید راه حل چیست؟
راه حل استفاده از توابع توسعه است در تعریف این توابع باید اولا static باشند و دوما اولین پارامتر ورودی با کلمه کلیدی this شروع شود (فقط اولین پارامتر) مثال:
static class MyExtensionMethodes
{
public static string PrintString(this int input)
{
return input.ToString();
}
}
برای روشن تر شدن مطلب یک مثال را بررسی خواهیم کرد فکر کنید که یک کلاس با نام Car داریم و این کلاس را اجازه دسترسی به آن نداریم به عبارتی نمی توانیم ان را تغییر دهیم کلاس ما به صورت زیر تعریف شده است
public class car
{
public void PrintName(String name)
{
MessageBox.Show(name);
}
}
حال شما فقط می دانید که باید از این کلاس استفاده کنید و هیچ اطلاعی از نحوه تولید کلاس ندارید. فکر کنید شما می خواهید یک متد به این کلاس اضافه کنید راه حل چیست؟ استفاده از توابع توسعه !
خوب ما می خواهیم متد ToString را به این کلاس اضافه کنیم برای اینکار کافی است کد زیر را به برنامه اضافه کنید (بهتر است این کد را در یک کلاس اضافه نمایید تا از سایر فرم ها و کلاس ها قابل استفاده باشد البته این بستگی به نیاز شما دارد)
public static class CarExtension
{
public static String Parintable(this Car c)
{
return "Hello";
}
}
حال اگر یک شی از کلاس ایجاد کنیم و یا متدها و پراپرتی های کلاس را بررسی نماییم، لیستی مشابه لیست زیر نمایش داده خواهد شد
نکته برای برقراری ارتباط بین کلاس Car و کلاس CarExtension کافی است که در پارامتر اول متد جدیدتان کلاسی را که می خواهید با ان ارتباط برقرار کنید مشخص نمایید