Como chegar atributos em um campo referenciado
-
19-09-2019 - |
Pergunta
Eu tenho uma pergunta: Existe uma maneira elegante de obter atributos em um campo referenciado. Ou seja:.
public class C1: Base
{
[MyAttribute]
public string Field1;
}
public class Base
{
private void Do(ref string field)
{
if (field has attributes)
DoSomething();
}
}
Como posso obter atributos de um campo no método de Do ()?
Agradecemos antecipadamente.
Solução
Não há nenhuma maneira você pode fazer isso com a assinatura ref string field
. Os atributos são aplicados a declarações (campos, classes, eventos etc.), não para "instâncias".
O que você pode fazer, é alterar o seu método como este:
private void Do(Type fieldContainingType, string fieldName, ref string field)
e, em seguida, usar o reflexo para inspecionar fieldContainingType
ver, quais atributos são aplicados a campo chamado fieldName
. Esta abordagem, no entanto, é extremamente frágil e, geralmente, muito ruim.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow