为Console添加扩展方法

Console中都是静态方法,有的时候我们可以需要一些特别的颜色和状态显示,
需要不停的重置Console的字体,一行行写代码有的时候我会觉得麻烦。
这里提供一种思路,学习Linq里面的链式调用,我们可以做到更多。

 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 }
View Code

 

 

posted @ 2015-03-24 08:47  Winterfell~  阅读(452)  评论(0编辑  收藏  举报