1 namespace System
2 {
3 public static class ConsoleX
4 {
5 private static readonly IConsoleExecutable executor;
6
7 static ConsoleX()
8 {
9 executor = new ConsoleExecutor();
10 }
11
12 public static IConsoleExecutable WriteLineColor(ConsoleColor color, string message, params object[] para)
13 {
14 return executor.WriteLineColor(color, message, para);
15 }
16
17 public static IConsoleExecutable WriteColor(ConsoleColor color, string message, params object[] para)
18 {
19 return executor.WriteColor(color, message, para);
20 }
21
22 public static IConsoleExecutable Error(Exception e)
23 {
24 return executor.Error(e);
25 }
26
27 private class ConsoleExecutor : IConsoleExecutable
28 {
29 #region IConsoleExecutable Members
30
31 public IConsoleExecutable WriteLineColor(ConsoleColor color, string message, params object[] para)
32 {
33 Console.ForegroundColor = color;
34 Console.WriteLine(message, para);
35 Console.ResetColor();
36 return this;
37 }
38
39 public IConsoleExecutable WriteColor(ConsoleColor color, string message, params object[] para)
40 {
41 Console.ForegroundColor = color;
42 Console.Write(message, para);
43 Console.ResetColor();
44 return this;
45 }
46
47 public IConsoleExecutable Error(Exception e)
48 {
49 WriteLineColor(ConsoleColor.Red, e.ToString());
50 return this;
51 }
52
53 #endregion
54 }
55 }
56
57 public interface IConsoleExecutable
58 {
59 IConsoleExecutable WriteLineColor(ConsoleColor color, string message, params object[] para);
60
61 IConsoleExecutable WriteColor(ConsoleColor color, string message, params object[] para);
62
63 IConsoleExecutable Error(Exception e);
64 }
65 }