In Attribute-Instance ermitten über welchem Property es sitzt?



  • Hallo Leute,

    ich habe ein Attrbute Klasse, welche (nur) über Property Deklaration sitzt.

    Nun will ich in der Attribut Klasse direkt herausfinde über welcher Property in einer Klasse es definiert ist?

    geht das?



  • Du solltest innerhalb der Attribute-Klasse nicht direkt wissen, auf welche Member es definiert wurde.
    Mittels Attribute.GetCustomAttribute() kannst du aber alle Member der Klasse ermitteln, welche ein bestimmtes Attribute besitzen.
    Für dich sollte die Überladung GetCustomAttribute(MemberInfo element, Type attributeType
    ) die richtige sein (statt dem abstrakten MemberInfo kannst du dann selbstverständlich ein konkretes PropertyInfo angeben).

    Du solltest diese Methode also in der Klasse aufrufen, welche deine Attribute auswertet (und eben nicht in der Attribut-Klasse selber).

    Edit: Falls dir MemberInfo, PropertyInfo etc. nichts sagen, das Stichwort dafür lautet "Reflection".



  • Hallo,

    gibt es ne möglichkeit herauszufinden welche Klasse bzw. Instance eine andere Instance erzeugt hat?

    Bspw:

    class foo
    {
     public foo()
     {
        _dat= new Bar();
     }
    
     private Bar _dat;
    }
    
    class Bar
    {
    public Bar()
    {
     //HIER Die instance von Foo herausfinden, welche "this" erzeugt hat.
    }
    }
    


  • NullBockException schrieb:

    gibt es ne möglichkeit herauszufinden welche Klasse bzw. Instance eine andere Instance erzeugt hat?

    Ja, nennt sich Parameter.


Log in to reply