Los métodos de extensión permiten agregar métodos a tipos existentes sin crear un nuevo tipo derivado, sin recompilar ni modificar de otro modo el tipo original. Se definen como métodos estáticos, pero se llaman usando la sintaxis de método de instancia. Su primer parámetro va precedido del modificador this y especifica sobre qué tipo opera el método, y se incorporan al ámbito a nivel del espacio de nombres.
public static int WordCount(this string str)
{
return str.Split().Length;
}
"Hello World".WordCount();
// => 2
En este ejercicio vas a procesar líneas de log.
Cada línea de log es un string con el siguiente formato: "[<LEVEL>]: <MESSAGE>".
Hay tres niveles de log distintos:
INFOWARNINGERRORTienes varias tareas; cada una recibe una línea de log y te pide que hagas algo con ella.
Al mirar los logs del último mes, ves que el mensaje de prueba siempre está después de una subcadena específica. Como prevés que tendrás que extraer el mensaje de prueba pronto, decides crear un método auxiliar que te ayude con eso.
Implementa el método de extensión (static) LogAnalysis.SubstringAfter(), que recibe un string delimitador y devuelve la subcadena que va después del delimitador.
var log = "[INFO]: File Deleted.";
log.SubstringAfter(": "); // => returns "File Deleted."
Al revisar más a fondo, ves que el nivel de log siempre está entre corchetes ([ y ]). Como también prevés que tendrás que extraer el nivel de log pronto, decides crear otro método auxiliar que te ayude con eso.
Implementa el método de extensión (static) LogAnalysis.SubstringBetween() que recibe dos strings delimitadores y devuelve la subcadena que está entre los dos delimitadores.
var log = "[INFO]: File Deleted.";
log.SubstringBetween("[", "]"); // => returns "INFO"
Implementa el método de extensión (static) LogAnalysis.Message() para devolver el mensaje contenido en un log.
var log = "[ERROR]: Missing ; on line 20.";
log.Message(); // => returns "Missing ; on line 20."
Implementa el método de extensión (static) LogAnalysis.LogLevel() para devolver el nivel de log de un log.
var log = "[ERROR]: Missing ; on line 20.";
log.LogLevel(); // => returns "ERROR"
Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.