dotnet / dotnet/command-line-api

Please provide a Source Generator that generates an implementation of ICommandHandler.

Aperta
#1,980 0 commenti 1 reazione 0 assegnatari Vedi su GitHub
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.