Pregunta

Tengo una pregunta: ¿Hay una manera elegante de conseguir atributos en un campo referenciado. Es decir:.

public class C1: Base
{
    [MyAttribute]
    public string Field1;
}
public class Base
{
    private void Do(ref string field)
    {
          if (field has attributes)
              DoSomething();
    }
} 

¿Cómo puedo obtener los atributos de un campo en el método Do ()?

Gracias de antemano.

¿Fue útil?

Solución

No hay manera de que usted puede hacer eso con la firma ref string field. Los atributos se aplicado a las declaraciones (campos, clases, eventos, etc.), no a "casos".

Lo que puede hacer, es cambiar su método como este:

private void Do(Type fieldContainingType, string fieldName, ref string field)

y luego utilizar la reflexión para inspeccionar fieldContainingType ver, qué atributos se aplican al campo fieldName llamado. Este enfoque, sin embargo, es extremadamente frágil y generalmente muy mal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top