Я хотел иметь хэш-таблицу со строкой в качестве ключа и функцию-указатель (делегат) в качестве значения. Этот способ вызывает правильную процедуру, заданную строковой командой. Однако компилятор его не съест.Как использовать коллекцию для хранения делегата?
Что я делаю неправильно?
//declaration
public delegate void categoryHandler(String request);
//init code
Hashtable categories = new Hashtable();
categories.Add("campaigns", Campaigns.post);
//function call
String category = "campaigns";
categoryHandler handler = (categoryHandler) categories[category];
if (handler != null)
{
handler(someString);
}
//handler
static public void post(String request)
{
...
}
Я получаю ошибку на линии, где я поставил функцию в хэш-таблице: Ошибка 2 Аргумент «2»: не удается преобразовать из «группы методов» до «объекта»
Я надеясь, что это просто какая-то семантическая штука, которую я забыл ... Но если этого не может быть сделано ... есть ли другой способ иметь какой-то String-based jumptable?
Какую версию .NET и C# вы используете? – thecoop