Does the Options attribute class really need to be sealed?
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
No se indica ningún archivo ni prueba. Empieza localizando la declaración de C# Options/OptionAttribute y su modificador sealed; después, inspecciona cómo se consumen los atributos y cómo están cubiertos por las pruebas. Se considera terminado cuando el proyecto tiene una decisión explícita y revisada sobre si se admiten atributos de opción derivados, con las correspondientes actualizaciones de la API y las pruebas si la decisión es afirmativa.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I have been using CommandLineParser for a while now (and it's changed how I build tools -- thank you!) including in a program with ~50 Verbs (and growing), and since many of the Verbs take common options, I was hoping to extend Options to provide common handling of them.
Simple example: if 15 Verbs take a LogFile option, each of which has a long name ("log-file") and a help description, I can do this now by constant strings to keep them consistent, but if I were able to do:
[AttributeUsage(AttributeTargets.Property)]
public class LogFileOptionAttribute : OptionAttribute
{
public LogFileOptionAttribute(bool required = false)
: base("log-file") // I don't use short option names for anything
{
HelpText = "Name of the logfile to use for blah blah blah";
Required = required;
}
}
and then adorn the actual option with:
public class BlahOptions {
...
[LogFileOption]
public string LogFileName {get ; set; }
...
}
I have easily a dozen of these common options. It's not a huge deal to create constant strings:
[Option(OPTION_LOGFILE_NAME, HelpText = OPTION_LOGFILE_HELPTEXT)]
but adding this level of abstraction would be more convenient.
If there's a good reason for this class to be sealed, then so be it, but mine doesn't feel like a ridiculous use case. I may well get to 100 verbs for this tool by the time I'm done.
- Lenguaje dominante
- C#
- Estrellas
- 4.8k
- Forks
- 478
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de commandlineparser/commandline
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
commandlineparser/commandline#951 · 1 comentario ·
-
Code example misses iEnumerable Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 70/100
commandlineparser/commandline#880 · 2 reacciones ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 45/100
commandlineparser/commandline#952 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
commandlineparser/commandline#948 ·
-
How to add examples for verbs? Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
commandlineparser/commandline#947 ·
Todos los issues de commandlineparser/commandline
Issues similares
-
bug frontend good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
NavigationViewItemAutomationPeer implements IInvokeProvider but never advertises the Invoke pattern Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
unoplatform/uno#24629 ·
-
agentic-workflows Needs: Triage :mag: State: In-PR
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
CS0162 "Unreachable code detected" warning from a MSBuildTemp .tmp file in every game project Abiertobug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
Type: enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
apache/arrow-adbc#4809 ·