commandlineparser / commandlineparser/commandline
Allow runtime attribute values via static methods
- Linguagem predominante
- C#
- Estrelas
- 4.8k
- Forks
- 478
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Descrição
Attribute values are limited to compile-time constant [attribute parameter types](https://github.com/dotnet/csharplang/blob/master/spec/attributes.md#attribute-parameter-types). This can be limiting when values need to be evaluated at runtime. For example, I might want to take my help text or license from some file, or I might want a non-constant default value, or I might want [dynamic options](https://github.com/commandlineparser/commandline/issues/9), etc.
One way around this would be a string pointer to a property/method which would supply the actual value:
```cs
class MyOptions
{
[Option('f', "foo", HelpTextProperty = nameof(FooHelpText), Default = nameof(FooDefault))]
public int Foo {get; set;}
private string FooHelpText {get { return File.ReadAllText("foo.txt"); } }
private int FooDefault {get { return Math.Pow(2,5); } }
}
```
Of course type validation would be performed (Default should have an assignable type to the property type, HelpTest should be a string, etc) for all such pointers (regardless of whether they are actually invoked, to fail fast in case of type inconsistency)
This is just one example, I believe this could be useful for many other attribute properties. To explicitly name the attributes currently defined in the library:
- `AssemblyLicenseAttribute` (don't really understand the multiple line thing BTW, why not just pass the full string including newlines)
- `AssemblyUsageAttribute` (same comment)
- `OptionAttribute`
- `ValueAttribute`
- `UsageAttribute`
- `VerbAttribute`
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Direção de pesquisa
Comece revisando as definições listadas de AssemblyLicenseAttribute, AssemblyUsageAttribute, OptionAttribute, ValueAttribute, UsageAttribute e VerbAttribute. Rastreie como os valores de seus atributos são consumidos e, em seguida, determine o escopo da resolução em tempo de execução de métodos ou propriedades e da validação de tipos nesses atributos. O trabalho estará concluído quando incluir um design definido e cobertura para os valores de runtime compatíveis.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- csharp
- Domínio
- cli
- Tipo de issue
- Funcionalidade
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 25/100