Also versuche ich im Grunde, ein dynamisches Menürahmenwerk in C# zu erstellen. Ich habe im Wesentlichen ein Menüelement (nur ein Rechteck mit etwas Text an dieser Stelle), das eine DoAction() -Methode enthält. Diese Methode wird immer dann ausgeführt, wenn auf das Rechteck geklickt wird. Ich möchte, dass die DoAction-Methode zur Laufzeit definiert werden kann. So könnte ich beispielsweise ein Menüelement instantiieren, dessen DoAction() - Methode die Funktion x() ausführt, und dann ein anderes Menüelement instanziieren, dessen DoAction() -Methode die Funktion y() ausführt. Was ich habe, ist so etwas.Klasse mit dynamischen Methoden erstellen
public class MenuElement {
public void DoAction(); // method I want to be dynamic
public MenuElement((text, height, width, etc), method myMethod){
DoAction = myMethod;
}
}
MenuElement m1 = new MenuElement(..., function x());
MenuElement m2 = new MenuElement(..., function y());
m1.DoAction(); // calls x()
m2.DoAction(); // calls y()
Dies ist die Art von Dingen, die ich weiß, wie in Javascript zu tun, aber ich bin nicht so mit C# vertraut, und ich vermute, .Net wird mich durch ein paar Reifen als JS würde springen. Nach dem, was ich lese, werde ich Delegierte verwenden müssen? Ich kann keine Tutorials finden, denen ich wirklich folgen kann.
Ehrfürchtig, das ist genau das, was ich gesucht habe! Muss ich jedes Mal einen Lambda-Ausdruck verwenden? Oder könnte ich eine bereits existierende Methode weitergeben? Sprich, etwas wie neue Aktion (myAlreadyExistingMethod()); –
Nach einem kurzen Test: ja du kannst. Für jeden, der sich fragt, ist es so einfach wie neu Aktion (myAlreadyExistingMethod); // keine Klammern nach dem Methodennamen –
Danke für die angenommene Antwort. Ich hoffe, ich könnte helfen :) –