Los métodos de extensión permiten añadir 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 utilizando la sintaxis de un método de instancia. Su primer parámetro va precedido por el modificador this y especifica sobre qué tipo opera el método; además, se incorporan al scope a nivel de 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, y cada una recibirá una línea de log y te pedirá que hagas algo con ella.
Si observas los logs del último mes, verás que el mensaje de test siempre se encuentra después de una subcadena concreta. Como prevés que tendrás que extraer el mensaje de test en algún momento próximo, decides crear un método auxiliar que te ayude con eso.
Implementa el método de extensión (static) LogAnalysis.SubstringAfter(), que recibe un delimitador de tipo string y devuelve la subcadena que hay después del delimitador.
var log = "[INFO]: File Deleted.";
log.SubstringAfter(": "); // => returns "File Deleted."
Si te fijas mejor, verás que el nivel de log siempre se encuentra entre corchetes ([ y ]). Como también prevés que tendrás que extraer el nivel de log en algún momento próximo, decides crear otro método auxiliar que te ayude con eso.
Implementa el método de extensión (static) LogAnalysis.SubstringBetween(), que recibe dos delimitadores de tipo string y devuelve la subcadena que hay entre ambos delimitadores.
var log = "[INFO]: File Deleted.";
log.SubstringBetween("[", "]"); // => returns "INFO"
Implementa el método de extensión (static) LogAnalysis.Message() para devolver el mensaje que contiene 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.