Pregunta

¿Hay alguna forma de obtener los atributos personalizados de un objeto específico que estoy recibiendo en un método?

No quiero ni puedo iterar sobre Type.GetMembers () y buscar mi miembro. Tengo el objeto, que también es miembro, que tiene el atributo.

¿Cómo obtengo el atributo?

class Custom
{
    [Availability]
    private object MyObject = "Hello";

    private void Do(object o)
    {
        //does object 'o' has any custom attributes of type 'Availability'?
    }

    //somewhere I make the call: Do(MyObject)

}
¿Fue útil?

Solución

No. Los objetos no tienen atributos, los miembros los tienen. Cuando estés en el " Hacer " método, no hay registro del hecho de que llamaste Do (MyObject) vs Do (MyOtherFieldWhichHasTheSameValue).

Si necesita buscar los atributos en un miembro, básicamente tendrá que pasar la información de miembro relevante, no lo que suceda para evaluar.

Otros consejos

No puedes hacer esto sin al menos 1 llamada de reflexión. Después de eso, guarda el valor de alguna manera.

Ejemplo:

abstract MyBase
{
  public string Name;
  protected MyBase()
  {
    //look up value of Name attribute and assign to Name
  } 
}

[Name("Foo")]
class MyClass : MyBase
{
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top