Так что я в основном пытаюсь создать динамическую структуру меню на 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. Из того, что я читаю, мне придется использовать делегатов? Я не могу найти какие-либо учебники, которые я действительно могу легко выполнить.
Удивительно, это именно то, что я искал! Должен ли я каждый раз использовать лямбда-выражение? Или я смогу пройти уже существующий метод? Скажем, что-то вроде нового действия (myAlreadyExistingMethod()); –
После быстрого теста: да, вы можете. Для тех, кто задается вопросом, как это просто, как новое действие (myAlreadyExistingMethod); // без скобок после имени метода –
Спасибо за принятый ответ. Надеюсь, я смогу помочь :) –