X
تبلیغات
پیکوفایل
رایتل

شاید تاکنون برای شما اتفاق افتاده باشد که می خواهید متدی را به کلاسی اضافه کنید اما با مشکلات زیر مواجه هستید :

 

1-به سورس کلاس دسترسی ندارید ، سورس کلاس در اختیار شما نیست .

2-کلاس شما اجازه ارث بری ندارد   sealed است ، شما نمی توانید کلاس دیگری ایجاد کنید و از آن ارث بری کنید

 

اما شما نیاز مبرم دارید به اینکه به کلاس مورد نظرتون متدی را اضافه کنید ، خوشبختانه از سی شارپ 3 ، متدهای توسعه یافته Extension Methods مشکل فوق را براحتی حل کرده است .

 

اکنون برای بهتر فهمیدن مطلب به شکل زیر دقت کنید




همانطور که می بینید ما یک کلاس داریم به نام mydata   این کلاس اجازه ارث بری را به هیچ کلاس دیگری نمی دهد اما حالا ما بر حسب ضرورت ما می خواهیم متدی را به آن اضافه کنیم ، برای اینکار حتما باید رویه زیر را انجام دهیم .

 

1-ابتدا یک کلاس استاتیک تعریف می کنیم تاکید می شود که حتما کلاس ما استاتیک باشد مانند کلاس مثال بالا ExtendMyData

 

2-متدی را تعریف می کنیم که این متد ، اولا باید حتما استاتیک باشد و ثانیا حتما اولین پارامتر آن از نوع this  باشد و بعد از کلمه کلیدی this  نام کلاس ذکر شود .

 

اکنون متد ما آماده است هر جا لازم بود می توانیم براحتی با تعریف متغیری از نوع کلاس mydata  براحتی متد بالا را فراخوانی کنیم .

 

نکته آخر ، فراموش نکنید که کلاس شما و کلاس متد توسعه یافته باید در یک فضای نام NameSpace  باشند مانند تصویر زیر که ساختار را کاملا نشان می دهد .



برگرفته از کتاب Illustrated C# 2008 از انتشارات apress