Når jeg laver en konsol applikation, er det for det meste for at udfører en eller anden batch, eller for at overvåge et eller andet. Og næsten altid; skriver jeg en bunke info ud til konsollen, via Console.WriteLine. Det kan bare somme tider være lidt uoverskuligt, at se på al den tekst output, og man savner de gode gamle dage, hvor man på sin Amiga 500 kunne skrive: print(“Hello world”, Color(255000255)). For så at få skrevet sit budskab ud i lilla. Hvad gør man lige i .NET?
Det er langt mere overskueligt at skrive sine exceptions ud i rød, end at lade dem forsvinde i strømmen af hvide Ascii karakterer. Googling på nettet giver en lang række forslag, hvor man skal lave dll-import af kernel32.dll osv., men det viser sig at løsningen ligger lige foran snuden på mig. Console klassen har en statisk property: ForegroundColor. Hvis man f.eks. sætter den til: ConsoleColor.Red, så udskriver den næste linie i farven?
Ja – andet er der ikke i det. Man kan jo ikke lave extension metoder på en statisk klasse, er man nød til at lave en lille metode på sin programklasse, for ikke helt at rode farverne sammen:
public static void WriteLine(string value, ConsoleColor color)
{
var oldColor = Console.ForegroundColor;
Console.ForegroundColor = color;
Console.WriteLine(value);
Console.ForegroundColor = oldColor;
}
Det havde været dejligt at kunne pakke det væk i en extension eller en handler, men det kan vel gå.
Code on…