Я хочу вызвать метод, основанный на значении в таблице поиска. Значения будут найдены в базе данных и будут повторяться. Чего я пытаюсь избежать, так это:
foreach (Row r in rows)
{
if (r["command"] == "Command1")
MyClass.Command1();
else if (r["command"] == "Comman2")
MyClass.Command2();
else if (r["command"] == "Comman3")
MyClass.Command3();
}
Это устаревший код, который я должен поддерживать, но я знаю, что, безусловно, есть лучший способ сделать это. В настоящее время код выглядит как выше, но я ищу более элегантное решение.
EDIT:
Исходя из приведенных ниже предложений, я пытаюсь сделать что-то вроде этого:
static void Main(string[] args)
{
Dictionary<string, Action<MyClass>> myActions = new Dictionary<string,Action<MyClass>>();
myActions.Add("Command1",MyClass.DoCommand1("message1"));
myActions.Add("Command2",MyClass.DoCommand1("message2"));
myActions["Command1"]();
}
с моим файлом класса, похожим на это:
public class MyClass
{
public void DoCommand1(string message)
{
Console.WriteLine(message);
}
public void DoCommand2(string message)
{
Console.WriteLine(message);
}
}
Однако я получаю синтаксические ошибки, говорящие о том, что для нестатического поля, метода или свойства MyClass.DoCommand1 (string) требуется ссылка на объект. Есть идеи?
Обратите внимание, что я использую .NET 2.0 framework.