В итоге я сделал следующее:
// Property:
private bool? _console_present;
public bool console_present {
get {
if (_console_present == null) {
_console_present = true;
try { int window_height = Console.WindowHeight; }
catch { _console_present = false; }
}
return _console_present.Value;
}
}
//Usage
if (console_present)
Console.Read();
Следуя совету thekips, я добавил члена-делегата в класс библиотеки для проверки пользователя - и установил для него имплиментацию по умолчанию, которая используется выше, чтобы проверить, есть ли консоль, и если она присутствует, использует ее для получения проверки пользователя или ничего не делает, если нет ( действие продолжается без проверки пользователя). Это значит:
- Все существующие клиенты (приложения командной строки, службы Windows (без взаимодействия с пользователем), приложения wpf) работают без изменений.
- Любое неконсольное приложение, которому требуется ввод, может просто заменить делегата по умолчанию проверкой другого (GUI - msg box и т. Д.).
Спасибо всем, кто ответил.