A bővítő metódusokkal metódusokat adhatsz meglévő típusokhoz anélkül, hogy új származtatott típust hoznál létre, újrafordítanád a kódot, vagy más módon módosítanád az eredeti típust. Statikus metódusként definiálod őket, de példánymetódus-szintaxissal hívod meg. Az első paraméterük előtt a this módosító szerepel, amely megadja, hogy a metódus melyik típuson működik; a metódusok pedig a névtér szintjén bekerülnek a scope-ba.
public static int WordCount(this string str)
{
return str.Split().Length;
}
"Hello World".WordCount();
// => 2
Ebben a feladatban naplósorokkal fogsz dolgozni.
Minden naplósor egy string, amelynek formátuma a következő: "[<LEVEL>]: <MESSAGE>".
Három különböző naplózási szint van:
INFOWARNINGERRORTöbb részfeladat vár rád, és mindegyik kap egy naplósort, amelyikkel valamit tenned kell.
Ha megnézed az elmúlt hónap naplóit, láthatod, hogy a tesztüzenet mindig egy adott részstring után található. Mivel számítasz rá, hogy a közeljövőben ki kell majd nyerned a tesztüzenetet, úgy döntesz, írsz egy segédmetódust, amely ebben segít.
Valósítsd meg a (static) LogAnalysis.SubstringAfter() bővítőmetódust, amely átvesz egy string elválasztót, és visszaadja az elválasztó utáni részstringet.
var log = "[INFO]: File Deleted.";
log.SubstringAfter(": "); // => returns "File Deleted."
Ha jobban megnézed, láthatod, hogy a naplózási szint mindig szögletes zárójelek ([ és ]) között található. Mivel arra is számítasz, hogy előbb-utóbb ki kell nyerned a naplózási szintet, úgy döntesz, írsz még egy segédmetódust, amely ebben segít.
Valósítsd meg a (static) LogAnalysis.SubstringBetween() bővítőmetódust, amely átvesz két string elválasztót, és visszaadja a két elválasztó közötti részstringet.
var log = "[INFO]: File Deleted.";
log.SubstringBetween("[", "]"); // => returns "INFO"
Valósítsd meg a (static) LogAnalysis.Message() bővítőmetódust, amely visszaadja a naplósorban található üzenetet.
var log = "[ERROR]: Missing ; on line 20.";
log.Message(); // => returns "Missing ; on line 20."
Valósítsd meg a (static) LogAnalysis.LogLevel() bővítőmetódust, amely visszaadja egy naplósor naplózási szintjét.
var log = "[ERROR]: Missing ; on line 20.";
log.LogLevel(); // => returns "ERROR"
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C# nyelvet 62 fogalom178 feladat segítségével, valódi emberi mentorálással, mindez ingyen.