Question

Existe-t-il un moyen d'obtenir les attributs personnalisés d'un objet spécifique que je reçois dans une méthode?

Je ne veux pas et ne peux pas parcourir sur Type.GetMembers () et rechercher mon membre. J'ai l'objet, qui est aussi membre, qui a l'attribut.

Comment puis-je obtenir l'attribut?

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)

}
Était-ce utile?

La solution

Non. Les objets n'ont pas d'attributs - les membres en ont. Au moment où vous vous trouvez dans la section "Do". méthode, il n’ya aucune trace du fait que vous avez appelé Do (MyObject) vs Do (MyOtherFieldWhichHasTheSameValue).

Si vous devez rechercher les attributs d'un membre, vous devrez en principe indiquer l'information MemberInfo appropriée, et non ce à quoi il revient d'évaluer.

Autres conseils

Vous ne pouvez pas faire cela sans au moins un appel Reflection. Ensuite, enregistrez la valeur d’une manière ou d’une autre.

Exemple:

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

[Name("Foo")]
class MyClass : MyBase
{
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top