Просто оберните консоль в свой собственный класс и используйте ее вместо этого.Вам не нужно наследовать для этого:
class MyConsole
{
public static string ReadLine()
{
return System.Console.ReadLine();
}
public static string ReadLine(string message)
{
System.Console.WriteLine(message);
return ReadLine();
}
// add whatever other methods you need
}
Тогда вы можете вместо этого использовать его в своей программе:
string whatEver = MyConsole.ReadLine("Type something useful:");
Если вы хотите немного его подтолкнутьдалее и сделав MyConsole
немного более гибким, вы также можете добавить поддержку для замены реализаций ввода / вывода:
class MyConsole
{
private static TextReader reader = System.Console.In;
private static TextWriter writer = System.Console.Out;
public static void SetReader(TextReader reader)
{
if (reader == null)
{
throw new ArgumentNullException("reader");
}
MyConsole.reader = reader;
}
public static void SetWriter(TextWriter writer)
{
if (writer == null)
{
throw new ArgumentNullException("writer");
}
MyConsole.writer = writer;
}
public static string ReadLine()
{
return reader.ReadLine();
}
public static string ReadLine(string message)
{
writer.WriteLine(message);
return ReadLine();
}
// and so on
}
Это позволит вам управлять программой из любой реализации TextReader
, поэтому командыможет прийти из файла, а не из консоли, что может обеспечить несколько хороших сценариев автоматизации ...
Обновление
Большинство методов, которые вам нужно раскрыть, чрезвычайно просты.Хорошо, возможно, немного утомительно писать, но это не много минут работы, и вам нужно сделать это только один раз.
Пример (при условии, что мы находимся во втором моем примере выше, с назначаемым читателем и писателем):
public static void WriteLine()
{
writer.WriteLine();
}
public static void WriteLine(string text)
{
writer.WriteLine(text);
}
public static void WriteLine(string format, params object args)
{
writer.WriteLine(format, args);
}