Словарь действий - Включить параметры действий - PullRequest
3 голосов
/ 02 марта 2020

У меня есть словарь, где ключом является строка, а значением является действие, которое принимает два параметра (строку и байтовый массив)

private Dictionary<string, Action> handlers = new Dictionary<string, Action>();

Затем функция добавить значение в словарь

public void Bind(string key, Action<string, byte[]> cb)
{
    handlers[key] = cb;
}

Однако ошибка «Невозможно преобразовать System.Action в System.Action»

Как изменить определение словаря для включения действия параметры

1 Ответ

3 голосов
/ 02 марта 2020

Вы должны использовать тот же тип в вашем словаре с тем, что вы хотите назначить:

private Dictionary<string, Action<string, byte[]>> handlers 
    = new Dictionary<string, Action<string, byte[]>>();

Тогда ваш KeyValuePair cb будет иметь то же TValue, что и handlers:

public void Bind(string key, Action<string, byte[]> cb)
{
    handlers[key] = cb;
}
...