Как добавлять в список методы разной сигнатуры? - C#
Формулировка задачи:
Нужно запомнить все выполненные методы в список, и потом выборочно их выполнять.
Вот мой вариант с делегатами:
Классы:
Мэйн:
Все бы ничего да вот использование dynamic меня пугает. Я мало о нем знаю, но как то все слишком просто.
Это не что-то из принципиально не использующегося, как оператор goto?
Кстати нет строгого условия что методы должны сохраняться именно в списке. Просто моя задача: чтобы программа запоминала действия пользователя и потом сама их выполняла.
Если знаете другой вариант как это сделать - подскажите пожалуйста!
class Class1 { public string replaceSpaces(string a) { return a; } } class Class2 { public int replaceInt(int n) { return n; } }
namespace IsOnlyForMe { public partial class Form1 : Form { delegate string strMod(string str); delegate int strMod2(int str); List<object> MyDelegatesList = new List<object>(); //Список из object куда буду сохранять экз. делегатов public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Class1 so = new Class1(); // Создание экземпляра делегата. strMod strOp = new strMod(so.replaceSpaces); Class2 so2 = new Class2(); strMod2 strOp2 = new strMod2(so2.replaceInt); MyDelegatesList.Add(strOp); MyDelegatesList.Add(strOp2); foreach (dynamic object item in MyDelegatesList) //Использовал dynamic. Можно ли так? { if (item.GetType() == strOp.GetType()) textBox1.Text = item("Проверка работы методов."); } } } }
Решение задачи: «Как добавлять в список методы разной сигнатуры?»
textual
Листинг программы
void msg(string s) { MessageBox.Show(s); } List<Delegate> actions = new List<Delegate>(); actions.Add(new Action<string>(msg)); actions.Add(new Action<string>(msg)); actions.Add(new Action<string>(msg)); int i = 0; foreach (Delegate d in actions) d.DynamicInvoke(i++.ToString());
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д