Les méthodes d'extension permettent d'ajouter des méthodes à des types existants sans créer un nouveau type dérivé, sans recompiler ni modifier le type d'origine d'une autre manière. Elles sont définies comme des méthodes statiques mais sont appelées en utilisant la syntaxe de méthode d'instance. Leur premier paramètre, précédé du modificateur this, spécifie le type sur lequel la méthode opère, et elles sont mises dans la portée au niveau de l'espace de noms.
public static int WordCount(this string str)
{
return str.Split().Length;
}
"Hello World".WordCount();
// => 2
Dans cet exercice, on va traiter des lignes de log.
Chaque ligne de log est une string formatée comme suit : "[<LEVEL>]: <MESSAGE>".
Il existe trois niveaux de log différents :
INFOWARNINGERRORTu as plusieurs tâches, et chacune prend une ligne de log et te demande d'en faire quelque chose.
En regardant les logs du mois dernier, tu vois que le message de test se trouve toujours après une sous-chaîne donnée. Comme tu prévois de devoir extraire le message de test dans un futur proche, tu décides de créer une méthode utilitaire pour t'aider à le faire.
Implémente la méthode d'extension (static) LogAnalysis.SubstringAfter(), qui prend une string comme délimiteur et renvoie la sous-chaîne qui suit ce délimiteur.
var log = "[INFO]: File Deleted.";
log.SubstringAfter(": "); // => returns "File Deleted."
En y regardant de plus près, tu vois que le niveau de log se trouve toujours entre crochets ([ et ]). Comme tu prévois également de devoir extraire le niveau de log dans un futur proche, tu décides de créer une autre méthode utilitaire pour t'aider à le faire.
Implémente la méthode d'extension (static) LogAnalysis.SubstringBetween() qui prend deux strings comme délimiteurs et renvoie la sous-chaîne comprise entre ces deux délimiteurs.
var log = "[INFO]: File Deleted.";
log.SubstringBetween("[", "]"); // => returns "INFO"
Implémente la méthode d'extension (static) LogAnalysis.Message() pour renvoyer le message contenu dans un log.
var log = "[ERROR]: Missing ; on line 20.";
log.Message(); // => returns "Missing ; on line 20."
Implémente la méthode d'extension (static) LogAnalysis.LogLevel() pour renvoyer le niveau de log d'un log.
var log = "[ERROR]: Missing ; on line 20.";
log.LogLevel(); // => returns "ERROR"
Inscris-toi sur Exercism pour apprendre et maîtriser C# avec 62 concepts178 exercices, et un vrai mentorat humain, le tout gratuitement.