私は基本的にC言語で動的メニューフレームワークを作成しようとしています。私は本質的に、DoAction()メソッドを含むメニュー要素(この時点ではテキストを含む長方形)を持っています。このメソッドは、矩形がクリックされるたびに実行されます。私が望むのは、実行時にDoActionメソッドを定義できることです。たとえばDoAction()メソッドがx()関数を実行したメニュー要素をインスタンス化し、次にDoAction()メソッドがy()関数を実行する別のメニュー要素をインスタンス化することができます。私が持っているものは、このようなものです。動的メソッドを使ってクラスを作成する
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()
これは、私はJavaScriptで行う方法を知っているもののようなものですが、私は、C#のように慣れていないんだ、と私は.NETは私はJSが希望よりもさらにいくつかのフープを介してジャンプになります疑い。私が読んでいることから、私はデリゲートを使わなければならないでしょうか?私は本当に簡単に従うことができるチュートリアルは見つかりません。
これはまさに私が探していたものです!毎回ラムダ式を使用する必要がありますか?あるいは、私は既に存在する方法で渡すことができるでしょうか?たとえば、新しいAction(myAlreadyExistingMethod())のようなものです。 –
クイックテストの後:はいできます。新しいAction(myAlreadyExistingMethod)のような単純なものが不思議に思える人のために。 //メソッド名の後に角括弧が付きません –
答えに感謝します。私は私が助けることができることを願っています。 –