Методы из Dictionary

359
31 марта 2017, 21:44
public Dictionary<string, Func<List<string>, object>> operations = new Dictionary<string, Func<List<string>, object>>();
operations.Add("myComand", myMethod);

Объясните, пожалуйста, как реализовать такой словарь?

Answer 1

Func<List<string>, object> - делегат, который можно инициализировать методом с прототипом, указанным в делегате Func.

В вашем случае создавайте методы с прототипом:

public object MyMethod(List<string> input)

Далее присваивайте имена методов делегату и помещайте в словарь методом Dictionary.Add();

Answer 2

Как вариант:

public class Commands<T>
{
    public readonly Dictionary<string, T> CommandDictionary =
        new Dictionary<string, T>();
    public void AddCommandToDictionary(string command,
        T action)
    {
        CommandDictionary.Add(command, action);
    }
}

Создаете объект:

Commands<Func<bool>> _commands = new Commands<Func<bool>> ();

И добавляете:

_commands.AddCommandToDictionary("input_command", () =>
{
    SomeUsefulFunction();
    return true;
});

И само использование:

Func<bool> cmd;
if (_commands.CommandDictionary.TryGetValue(input, out cmd))
{
    cmd();
}
READ ALSO
как обратиться к элементу словаря по ключу?

как обратиться к элементу словаря по ключу?

как обратиться к элементу словаря по ключу, если ключ -

287
async void или как превратить Action в Func&lt;Task&gt;

async void или как превратить Action в Func<Task>

Есть некий класс, который принимает в конструктор Action<object>Но мне потребовалось передать туда асинхронный метод (то есть Func<object, Task>)

205
Visual Studio 2017 и MVC3

Visual Studio 2017 и MVC3

Подскажите, можно ли запустить в VS 2017 проект MVC3? Вроде, все MVC 3 установлен, но необходимые либы не видит

301
Взаимодействие с календарем Windows 10

Взаимодействие с календарем Windows 10

Когда щелкаешь на часы в Windows 10, открывается панелька часов, календарь и события

208