
آموزش متدهای گسترش Extension Method ها در سی شارپ
آموزش متدهای گسترش Extension Method ها در سی شارپ یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی متدهای گسترش (Extension Method ها) در سی شارپ است که با نام اصلی C# Extension Methods از شرکت Pluralsight منتشر شده است.
متدهای گسترش (Extension Method ها) در سی شارپ
متدهای گسترش (extension method ها) متدهای هستند که به صورت static تعریف می شوند و می توانند بر روی یک نوع داده ای و یا data type عمل کنند و آن را گسترش بدهند. از extension method ها برای اضافه کردن قابلیت های جدید و گسترش دادن data type های از قبل موجود استفاده می شود. به راحتی با استفاده از extension method ها در زبان برنامه نویسی سی شارپ میتوانیم متدهایی را به data type های از قبل موجود بدون استفاده کردن از وراثت اضافه کنیم.

به عبارت دیگر برای اضافه کردن قابلیت های جدید به یک data type دیگر نیازی به ساختن یک sub class و یا کامپایل کردن دوباره کد و یا حتی تغییر دادن آن را data type نیست. کدی که در قسمت زیر مشاهده می کنید نحوه تعریف کردن یک extension method بسیار ساده برای نوع داده ای string را نشان می دهد.
public static int myExtensionMethod(this string str) { return Int32.Parse(str); }
به همین ترتیب کدی که در قسمت زیر مشاهده می کنید نحوه استفاده کردن از این اextension method بر روی یک متغیر از نوع string را نشان میدهد.

using System;
using System.Text;
namespace Program {
public static class Demo {
public static int myExtensionMethod(this string str) {
return Int32.Parse(str);
}
}
class Program {
static void Main(string[] args) {
string str1 = "565";
int n = str1.myExtensionMethod();
Console.WriteLine("Result: {0}", n);
Console.ReadLine();
}
}
}
خروجی این کد شبیه به قسمت زیر خواهد بود.
Result: 565
در پایان توصیه می کنیم که از آموزش سی شارپ دات نت در ویژوال استادیو و آموزش رایگان برنامه نویسی با زبان سی شارپ نیز دیدن کنید.
ساخت Extension Method Library برای نیازهای اختصاصی پروژه
در پروژههای C# ممکن است بخواهید عملیاتی مشترک را به شکل متدی قابلفراخوانی روی نوعهای موجود در اختیار بخشهای مختلف برنامه قرار دهید. این آموزش از نوشتن یک `Extension Method` شروع میکند و سپس ساخت یک کتابخانه اختصاصی از این متدها را بررسی میکند. یکی از مثالهای مطرحشده، افزودن Extension Method برای کتابخانه `Configuration` است؛ سناریویی که نشان میدهد چگونه میتوان دسترسی به قابلیتهای موجود را با یک رابط مناسبتر همراه کرد. این روش برای سازماندهی عملیات تکرارشونده در پروژههای چندلایه مفید است، به شرط آنکه انتخاب متدها و محل تعریف آنها با دقت انجام شود.
وقتی Extension Methodها در یک کتابخانه جداگانه قرار میگیرند، نحوه استفاده از آنها در `Assembly`های مختلف نیز اهمیت پیدا میکند. در این آموزش، موضوع استفاده از Extension Methodها در Assemblyها و نوشتن متدهای `Private` بررسی میشود تا محدودیتهای دسترسی و شیوه سازماندهی کد روشنتر شود. برای مثال، ممکن است بخشی از توابع فقط برای استفاده داخلی یک کتابخانه طراحی شده باشند، درحالیکه برخی دیگر باید در پروژههای مصرفکننده قابل دسترسی باشند. درک این تفاوتها به طراحی API منظمتر کمک میکند و مانع از آن میشود که هر متد کمکی بدون توجه به محدوده استفاده، در اختیار تمام بخشهای برنامه قرار بگیرد.
چه زمانی Extension Method انتخاب مناسبی نیست؟
Extension Methodها میتوانند نحوه فراخوانی بعضی عملیات را سادهتر کنند، اما هر قابلیت جدیدی نباید با این روش پیادهسازی شود. این آموزش به محدودیتهای Extension Methodها و موضوع «خوب یا بد بودن» استفاده از آنها میپردازد تا بتوانید تصمیم طراحی را بر اساس نیاز واقعی کد بگیرید. برای نمونه، اگر یک عملیات به دسترسی مستقیم به وضعیت داخلی یک کلاس نیاز داشته باشد، Extension Method لزوماً راه مناسبی برای افزودن آن رفتار نیست. شناخت تفاوت میان قابلیتهای قابل پیادهسازی و محدودیتهای این سازوکار، به جلوگیری از APIهای گمراهکننده و ساختارهای دشوار برای نگهداری کمک میکند.
بخش بهترین روشها نشان میدهد که انتخاب نام، محل تعریف و دامنه استفاده از Extension Methodها باید با ساختار پروژه هماهنگ باشد. اگر تعداد زیادی متد با کاربردهای نامشخص در دسترس قرار بگیرند، پیدا کردن عملیات مناسب و تشخیص محل پیادهسازی آن دشوارتر میشود. در مقابل، یک مجموعه محدود و هدفمند میتواند عملیات مرتبط را در دسترس قرار دهد، بدون اینکه مسئولیت کلاسهای اصلی به شکل نامناسب تغییر کند. این آموزش برای توسعهدهندگان باتجربه C# مناسب است که میخواهند در طراحی کتابخانههای داخلی، کدهای Configuration و ابزارهای کمکی تصمیم بگیرند چه زمانی از Extension Method استفاده کنند و چه زمانی راهکار دیگری بهتر است.
سرفصل مطالب آموزش ویدئویی متدهای گسترش (Extension Method ها) در سی شارپ
فصل اول: معرفی دوره ی آموزشی- مقدمه دوره ی آموزشی
- چرا Extension Method ها مهم هستند
- کار کردن عملی با Extension Method ها
- درک هر چه بهتر Extension Method ها
- نوشتن یک Extension Method
- نوشتن Extension Method برای کتابخانه Configuration
- با Extension Method ها چه کاری میتوان کرد و چه کاری نمیتوان کرد
- محدودیت های استفاده کردن از Extension Method ها
- جمع بندی
- بهترین روش های کار کردن با Extension Method ها
- Extension Method ها: خوب و یا بد
- نوشتن Extension Method های Private
- استفاده کردن از Extension Method ها در Assembly ها
- نوشتن Extension Method های Public
- استفاده کردن از Extension Method ها در Entity Framework و Serilog
- جمع بندی
- چرا باید یک Extension Method Library سفارشی ساخت؟
- ساخت Extension Method ها برای Extension Method
- استفاده کردن از Extension Method برای نیازمندی های جدید
- استفاده کردن از Extension Method برای Non-functional Requirement ها
- استفاده کردن از Extension Method برای Production ها
- منتشر کردن یک Extension Method Library
- جمع بندی







