Extension Methods

Posted: أوت 16, 2008 in Tutorials
الوسوم:,

Extension Methods

ال C# 3.0 قدمت مفهوم ال Extensions Methods بحيث انك تقدر تمد type معين بميثودز جديدة بدون الحاجة لتغيير التعريف او الوراثة

اوكى الفكرة بتتلخص فى حاجتين

1- static

2- this

1- ال static (ال Extensions Methods) هى عبارة عن static methods فى static class

2- ال this بيكون فى اول بارمتر وبعدها التايب اللى هيتم مده

ابدأ ب

	public static class Stringer
	{
	}	

دا بقة ال static class اللى فيه الميثودز اللى هنضيفها لل string

الصيغة العامة للتعريف

</pre>
public static meth_name(this type var_name[, arg0, ..., argN]){

}

عمل ميثود IsCapitalized لتشير هل السترينج دا بيبدأ بحرف Capital او لأ

		public static bool IsCapitalized(this string  somestring){
			if (! string.IsNullOrEmpty(somestring) ){
				return char.IsUpper(somestring[0]);
			}else{
				return false;
			}
		}

لاجظ انها بتدى ريترن ب bool واول بارمتر هو string و this عشان نقدر نستخدمه كالتالى

“ “.IsCapitalized() ;

اللى هيحصل فى الفعل هو التحويل لل

Stringer.IsCapitalized( “ “ );

وبس كدا بكل بساطة!

ميثود IsTitle بيهمها ان كل اول حرف فى اى كلمة من جملة يكون Upper

			if (! string.IsNullOrEmpty(somestring)){
				string[] words=somestring.Split(' ');

				foreach(string w in words){
					if (! w.IsCapitalized()){
						return false;
					}
				}
				return true;
			}else{
			   return false;
			    }

كدا نقدر نستخدمها كالتالى

“ “.IsTitle();

مام نعمل حاجة احيانا كتير بنستخدمها وهى اننا نسيف array من ال strings لفايل ما

string[]

بكل بساطة تقدر تعمل حاجة كالتالى

		public static void SaveToFile(this string[] strings, string filename){
			File.WriteAllLines(filename, strings);

التطبيق كالتالى

			string s="Hello, world!";

			Console.WriteLine("s.IsCapitalized() => {0}",s.IsCapitalized());
			Console.WriteLine("s.IsTitle() => {0}", s.IsTitle());

			string[] strings={"Hello1", "Hello2", "Hello3"};
			strings.SaveToFile(@"c:\hiout");

وبس كدا
Refs:
C# 3.0 in a Nutshell, 3rd Edition

التعليقات
  1. BlacKXHat كتب:

    بورك فيك حبيبي احمد ..

    واصل حبي ..

    ولا تنسى Python 😀

  2. ahmed youssef كتب:

    Thanks BlackXHat for passing ^_^

  3. ahmedmostafa كتب:

    shit man 😀
    strings.SaveToFile(@”c:\hiout”);
    nice 🙂

  4. M كتب:

    انا حبيت ابارك بس يا ابو حميد
    واصل ابداعاتك يا كبير
    اخوك محمد

  5. ahmed youssef كتب:

    Eh ya storm ht move ll C#?
    @M: Allah ybarek feek w Thanks!

  6. ahmedmostafa كتب:

    no i am talking about the idea it self
    i am not against c# 😐

  7. lamia كتب:

    ممتازة بس هم لسه فاكرين يدعموها فى السى شارب؟

  8. ahmed youssef كتب:

    @St0rM: Mashy ya3m rbna ysahlo:)

    @Lamia: valid point!

  9. TheNapsterBoy كتب:

    yeah yeah…
    C# rocks :d
    but python is cool

اترك تعليقًا

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

شعار ووردبريس.كوم

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   /  تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   /  تغيير )

Connecting to %s