2 Stimmen

Wie rufe ich eine Methode für eine Klasse mit Attributen auf?

Ich möchte eine Methode für eine Klasse aufrufen, auf die ich einen Verweis habe. Die Methode, die ich aufrufen möchte, hat ein benutzerdefiniertes Attribut. Derzeit kann ich diese Attribute finden und die Eigenschaft meiner Klasse Attribute aufrufen.

Gibt es eine Möglichkeit, diese Methode aufzurufen?

PS/ Das Projekt ist in vbnet geschrieben, aber ich denke, die Lösung ist die gleiche in c#.

2voto

Adriano Repetti Punkte 62420

Wenn Sie finden können die Attribute haben Sie wohl die MethodInfo der betreffenden Methode(n). Rufen Sie einfach die MethodInfo.Invoke Methode müssen Sie die Instanz des Objekts angeben, das Sie verwenden möchten (oder null wenn es sich um eine statische Methode handelt) und alle Parameter, die an die Methode übergeben werden sollen (in der gleichen Reihenfolge wie im Prototyp).

Zum Beispiel, wenn Sie eine Methode mit diesem Prototyp aufrufen müssen:

void Foo(string name, int value);

Und Sie haben eine Funktion, um diese Methode zu finden (indem Sie nach einem bestimmten Attribut suchen):

MethodInfo FindMethodWithAttribute(Type attributeType, Type objectType);

Sie können diese Methode (eines hypothetischen Objekts) finden und aufrufen anObject ) mit diesem Code:

MethodInfo method = FindMethodWithAttribute(
    typeof(MyAttribute), // Type of the "marker" attribute
    anObject.GetType()); // Type of the object may contain the method

method.Invoke(anObject, new object[] { "someText", 2 });

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X