Completamento della scheda Applicazione console .NET
Domanda
Qualche idea su come implementare il completamento con tab per un'applicazione console .NET (C#)?E intendo all'interno di un'applicazione che viene eseguita e quindi esegue il loop per l'input dell'utente (come se esegui ftp.exe senza argomenti), in questo modo:
string line = string.Empty;
while (line != "exit")
{
//do something here
Console.ReadLine();
}
So che probabilmente non potrei effettivamente utilizzare readline, ma mi piacerebbe essere in grado di eseguire il completamento con tab nello stesso punto in cui recuperi l'input dall'utente.
Soluzione
Dai un'occhiata a questo codice dal progetto Monohttp://tirania.org/blog/archive/2008/Aug-26.htmlCi ho giocato un po' l'altro giorno.Esegue molte operazioni di modifica della riga di comando, ma non penso che esegua il completamento della riga.
Altri suggerimenti
Esegui un Console.ReadKey().
Se ottieni una scheda, guarda cosa hai nel buffer dei comandi e scorri i comandi disponibili.Se someCommand.Name.BeginsWith(currentinput)
, hai un vincitore e puoi scrivere sullo schermo un elenco di possibili comandi.
Se ce n'è solo uno (TM) puoi sostituirlo con ciò che l'utente ha digitato :)
Ho creato una piccola libreria per aggiungere questa funzionalità a un'app che ho creato:
https://github.com/fjunqueira/hinter
Potrebbe non soddisfare le tue esigenze, ma puoi sentirti libero di modificarlo.