Bestimmen der Eingabequelle in C#-Konsolenanwendungen
Viele Konsolenanwendungen erfordern die Unterscheidung zwischen Tastatureingaben und aus einer Datei umgeleiteten Eingaben. Dies ist wichtig, um das Anwendungsverhalten basierend auf dem Ursprung der Eingabe anzupassen.
Der effizienteste Ansatz
Die effektivste Methode zur Erkennung der Eingabeumleitung ist die Verwendung der Windows FileType()
API-Funktion über P/Invoke. Die folgende Hilfsklasse vereinfacht diesen Prozess:
<code class="language-csharp">public static class ConsoleEx { public static bool IsInputRedirected => FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdin)); // P/Invoke declarations (omitted for brevity) }</code>
Umsetzung
Die Überprüfung auf umgeleitete Eingaben ist unkompliziert:
<code class="language-csharp">bool isRedirected = ConsoleEx.IsInputRedirected;</code>
Erweiterte .NET 4.5-Funktionen
Es ist wichtig zu beachten, dass .NET 4.5 und spätere Versionen zu diesem Zweck integrierte Funktionen enthalten. Die Hilfsklasse ist unnötig; Verwenden Sie stattdessen:
<code class="language-csharp">bool isRedirected = Console.IsInputRedirected;</code>
Das obige ist der detaillierte Inhalt vonWie kann ich die Eingabeumleitung (Tastatur vs. Datei) in C# erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!