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.

Foi útil?

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
scroll top