Ich brauche eine beliebige Methode, um eine Funktion in der Lage sein myFunction
weitergeben müssen:Wie übergebe ich eine beliebige Methode (oder Delegate) als Parameter an eine Funktion?
void myFunction(AnyFunc func) { ... }
Es sollte möglich sein, sie mit anderen statisch, beispielsweise öffentliche oder private Methoden oder sogar Delegierten auszuführen:
myFunction(SomeClass.PublicStaticMethod);
myFunction(SomeObject.PrivateInstanceMethod);
myFunction(delegate(int x) { return 5*x; });
Die übergebene Methode kann eine beliebige Anzahl von Parametern und einen beliebigen Rückgabetyp haben. Es sollte auch möglich sein, die tatsächliche Anzahl von Parametern und deren Typen in myFunction
über Reflexion zu lernen. Was wäre AnyFunc
in der myFunction
Definition, um solche Anforderungen zu erfüllen? Es ist zulässig, mehrere überladene Versionen des myFunction
zu haben.
Was erwarten Sie, wenn die Methode über Parameter verfügt? Es klingt so, als ob Sie die Methode in eine No-Parameter/Void-Rückgabe (auch als "Action" bezeichnet) konvertieren sollten, bevor Sie sie an diese Methode übergeben. – Servy
'myFunction' analysiert Parameter der Funktion, prüft sie gegen eine externe Datenbank und ruft sie mit den notwendigen Werten auf oder schlägt fehl, wenn kein passender Eintrag in der Datenbank gefunden wird. –
Das ist ein * sehr * besorgniserregendes Design, bei dem Sie Code im Grunde als Daten behandeln. Sie sollten in Betracht ziehen, dies so zu ändern, dass Ihr Code statisch ist. – Servy