dotnet / dotnet/command-line-api
Please provide a Source Generator that generates an implementation of ICommandHandler.
- Lingua principale
- C#
- Stelle
- 3.7k
- Fork
- 428
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
I would like a Source Generator that supports implementing ICommandHandler like DragonFruit.
For example, for the following code,
```cs
partial class CommandHandler
{
[CommandHandler]
Task Handle(
int foo)
{
// command handling
}
}
```
generates following implementation.
```cs
partial class CommandHandler : ICommandHandler
{
public Task InvokeAsync(InvocationContext context)
{
var fooOption = context.ParseResult.CommandResult.Command.Options
.SingleOrDefault(static option => option.Name == "foo");
var fooValue = context.ParseResult.GetValueForOption(fooOption);
return this.Handle(fooValue);
}
}
```
The above code is for a very simple case; more considerations are needed for what actually works.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia leggendo gli entry point esistenti ICommandHandler, InvocationContext e [CommandHandler] a cui si fa riferimento nella richiesta. Determina come un source generator debba associare i parametri dell’handler alle opzioni della riga di comando analizzate, inclusi i casi aggiuntivi non trattati dall’esempio semplice. Il lavoro è completato quando le classi parziali generate implementano ICommandHandler e invocano l’handler con valori analizzati correttamente.
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
- Abbastanza chiara
- Idoneità per principianti
- 35/100