صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

Extension Methods

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

 

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

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

 

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

 

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




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

 

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

 

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

 

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

 

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



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

نظرات 1 + ارسال نظر
senaps چهارشنبه 17 آذر‌ماه سال 1389 ساعت 12:37 ق.ظ http://amd225.iblogger.org

سلام
حرف های شما هم درسته...و حق با مدیران و اینجور افراد هست!!
به ظنر من،فقط کسانی باید بهشون ازادی داده بشه که لیاقتش رو داشته باشن!!!
کسانی که کارشون رو با تمرکز،و دقیق و سر وقت تموم کنن...
متاسافنه گاهی کار افراد سرگرمی مطلقه!!یا نیم ساعت با با خواهر زنشون در مورد خرید خونه مشور میکنن!!!
یا برادر زادشون رو راهنمایی میکنن که پروژه اش رو چجوری بنویسه و تحویل بده!!!

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد