Frage

Gibt es eine Möglichkeit, die benutzerdefinierte Attribute eines bestimmten Objekts zu erhalten ich in einem Verfahren erhalte?

Ich will nicht, noch kann zu Type.GetMembers iterieren () und für mein Mitglied suchen. Ich habe die Aufgabe, die auch Mitglied ist, dass das Attribut hat.

Wie erhalte ich das 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)

}
War es hilfreich?

Lösung

Nein. Objekte nicht Attribute haben - Mitglieder tun. Durch die Zeit, die Sie in der „Do“ Methode sind, gibt es keine Aufzeichnungen über die Tatsache, dass Sie Do (MyObject) vs Do (MyOtherFieldWhichHasTheSameValue) genannt.

Wenn Sie die Attribute auf einem Mitglied nachschlagen müssen, werden Sie im Grunde in dem entsprechenden Member passieren müssen, nicht das, was es zu bewerten passiert.

Andere Tipps

Sie können dies nicht tun, ohne mindestens 1 Reflexion Anruf. Danach, irgendwie den Wert speichern.

Beispiel:

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

[Name("Foo")]
class MyClass : MyBase
{
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top