Como llegar atributos en un campo referenciado
-
19-09-2019 - |
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.
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