تسمح طرق الامتداد بإضافة طرق إلى أنواع موجودة دون إنشاء نوع مشتق جديد، أو إعادة ترجمة، أو تعديل النوع الأصلي بأي شكل آخر. تُعرَّف كطرق static ولكن يتم استدعاؤها باستخدام صيغة استدعاء طرق المثيل. يسبق معاملها الأول المُعدِّل this، وهو يحدد النوع الذي تعمل عليه الطريقة، وتُدخَل في النطاق على مستوى مساحة الأسماء.
public static int WordCount(this string str)
{
return str.Split().Length;
}
"Hello World".WordCount();
// => 2
في هذا التمرين ستتعامل مع أسطر السجل.
كل سطر سجل هو سلسلة نصية بالتنسيق التالي: "[<LEVEL>]: <MESSAGE>".
هناك ثلاثة مستويات سجل مختلفة:
INFOWARNINGERRORلديك عدة مهام، كل منها تأخذ سطر سجل وتطلب منك القيام بشيء به.
بالنظر إلى سجلات الشهر الماضي، ترى أن رسالة الاختبار تقع دائمًا بعد سلسلة نصية فرعية معيّنة. ولأنك تتوقع أن تحتاج إلى استخراج رسالة الاختبار في وقت قريب، فقد قررت إنشاء طريقة مساعدة تساعدك في ذلك.
نفّذ طريقة الامتداد (static) LogAnalysis.SubstringAfter()، التي تأخذ فاصلًا نصيًا وتُرجع السلسلة النصية الفرعية الواقعة بعد الفاصل.
var log = "[INFO]: File Deleted.";
log.SubstringAfter(": "); // => returns "File Deleted."
عند التدقيق أكثر، ترى أن مستوى السجل يقع دائمًا بين الأقواس المربعة ([ و ]). ولأنك تتوقع أيضًا أن تحتاج إلى استخراج مستوى السجل في وقت قريب، فقد قررت إنشاء طريقة مساعدة أخرى تساعدك في ذلك.
نفّذ طريقة الامتداد (static) LogAnalysis.SubstringBetween() التي تأخذ فاصلين نصيين، وتُرجع السلسلة النصية الفرعية الواقعة بين الفاصلين.
var log = "[INFO]: File Deleted.";
log.SubstringBetween("[", "]"); // => returns "INFO"
نفّذ طريقة الامتداد (static) LogAnalysis.Message() لإرجاع الرسالة المضمّنة في سجل.
var log = "[ERROR]: Missing ; on line 20.";
log.Message(); // => returns "Missing ; on line 20."
نفّذ طريقة الامتداد (static) LogAnalysis.LogLevel() لإرجاع مستوى السجل في سجل.
var log = "[ERROR]: Missing ; on line 20.";
log.LogLevel(); // => returns "ERROR"
سجّل في Exercism لتتعلّم وتتقن C# عبر 62 مفهومًا178 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.