Posts Tagged ‘Extension Methods’

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

Advertisements