dotnet / dotnet/command-line-api
Simple ICommandHandler that injects the ParseResult
Nessuno ha ancora preso questa issue.
- Lingua principale
- C#
- Stelle
- 3.7k
- Fork
- 428
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
Idea for an alternative to SetHandler() that is used in the example here.
class ParseResultHandler : ICommandHandler
{
public ParseResultHandler(Action<ParseResult> handle) { ... }
...
}
static class Program {
static int Main(string[] args)
{
var inputFileArg = new Argument<FileInfo>("input", "Path to the input file");
var exampleOpt = new Option<int?>(new[] { "-n", "--number" }, "Example option");
var rootCommand = new RootCommand(Description)
{
inputFileArg,
exampleOpt,
};
rootCommand.Handler = new ParseResultHandler((result) => {
var input_path = result.GetValueForArgument(inputFileArg);
var option = result.GetValueForOption(exampleOpt);
Console.WriteLine("Input path: {0}", input_path?.FullName ?? "None");
Console.WriteLine("Option: {0}", option?.ToString() ?? "None");
});
return rootCommand.Invoke(args);
}
}
I like this approach because it is easier for me to wrap my head around how it is working. Whereas I don't really understand what SetHandler<T1, T2, ...>() is doing except that it creates a handle function for AnonymousCommandHandler that eventually calls context.ParseResult.GetValueForArgument() and context.ParseResult.GetValueForOption() anyways.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia da docs/Your-first-app-with-System-CommandLine.md e dalle API SetHandler e ICommandHandler esistenti menzionate nell'issue. Confronta il modo in cui SetHandler raggiunge ParseResult e determina l'ambito previsto e la forma dell'API per un ParseResultHandler; il lavoro sarebbe completo quando fossero disponibili un design documentato e accettato e una relativa implementazione o un esempio.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- csharp
- Ambito
- cli
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100