Programming techniques

about every things that i''m learning and want learn to other people

Programming techniques

about every things that i''m learning and want learn to other people

چگونه می توان یک تابع را به هر نوع کلاسی اضافه کرد ؟

 

Extension Methods

·         آیا به کلاس های  sealed می توان تابعی افزود ؟

·         چگونه می توان یک تابع را به هر نوع  کلاسی اضافه کرد ؟

·         آیا می توان یک کلاس را در خارج از بدنه کلاس تعمیم و یا این کار را در فضای نام همان کلاس یا خارج از آن انجام داد؟

 جواب این پرسش ها در Extension Methods می باشد

قبل از C# 3.0  فقط می‌شد یک کلاس را از طریق ارث‌بری از آن توسعه داد اما حالا اکنون میتوان با متد های توسعه این کار را انجام داد

توابع تعمیم یافته به اعضاء خصوصی کلاسی که تعمیم می‌یابد، دسترسی ندارند.

 شکل کلی توابع تعمیم یافته :

 

public static class ExtendingClassName

{

public static ReturnType MethodName(this   ExtendedMethod arg)

{

//دستورات درون متد

Return ReturnType;

}

}

 

 توجه کنید که:

1.       کلاس توسعه‌دهنده و تابع توسه‌دهنده باید استاتیک باشند.

2.       در داخل آرگومان تابع، کلمه کلیدی this  استفاده می‌‎‎شود.

3.       بعد از this عنوان کلاسی که قصد توسعه آن را داریم، ذکر می‌کنیم.

4.       در هرجا که خواستیم از قابلیت تعمیم داده شده استفاده کنیم باید فضای نام مربوط به آن را ذکر کنیم.

5.       با کلمه کلیدی static  نمیتوان کلاسی با متدهایvirtual  ، abstract  و override را توسعه داد. 

 

 public static class ExtendingString

    {

        public static string AddPrefix(this   string arg, string prefix)

        {

            return String.FormatFormat("{0}{1}", prefix, arg);

        }

    }

 

//call method

            var s = "Student";

            Console.WriteLine(s.AddPrefix("tbl"));

 

// خروجی

 tblStuden


 http://msdn.microsoft.com/en-us/library/bb383977.aspx

http://csharp.net-tutorials.com/csharp-3.0/extension-methods/

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