Pergunta

Eu posso usar o typeDescriptor.addattributes para adicionar um atributo a um tipo no tempo de execução. Como faço o mesmo para um método e parâmetro? (talvez 2 perguntas separadas ...)

Foi útil?

Solução

TypeDescriptor.AddAttributes afeta apenas a muito caso de uso específico; ou seja, de dentro System.ComponentModel. Para o descanso de reflexão, sabe nada sobre o atributo extra. E realmente, System.ComponentModel Realmente não se aplica a métodos ou parâmetros.

Então, em suma; você não pode. Você precisará armazenar essas informações em outro lugar (sob medida) ou adicioná-las em tempo de compilação.

Outras dicas

Como vejo ao analisar o TypeDescriptor classe em refletor, o .AddAttributes Método chama internamente o .AddProvider método. o TypeDescriptionProvider A instância passada é realmente responsável por fornecer metadados. Você pode tentar adicionar o atributo [typeDescriptionProviderattribute] à sua classe e implementar seu próprio provedor, derivando do TypeDescriptionProvider classe. Como diz a documentação, substituindo TypeDescriptionProvider.CreateInstance, você pode fornecer um objeto substituto cujo tipo tem todos os atributos necessários. Suspeito que os atributos aplicados aos métodos dentro do tipo de substituição também entrarão em vigor. No entanto, eu não tentei isso sozinho, então fique à vontade para experimentar ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top