C#字典存储操作/方法

时间:2017-10-18 10:33:32

标签: c# dictionary

我有一个包含string个密钥的字典,例如123456789。现在在我的应用程序中的其他一点,我希望我的字典看起来这个键并运行方法本身(存储在键中)或以某种方式返回函数,以便我可以手动添加参数。这甚至可能吗?

2 个答案:

答案 0 :(得分:3)

听起来像一个简单的任务。 (不包括健全性检查)

Dictionary<string,Action<object>> dict;

public Action<object> GetFunction(string key)
{
    return dict[key];
}

public void CallFunction(string key, object parameter)
{
    dict[key](parameter);
}

答案 1 :(得分:1)

你需要创建一个dictionary<string, Action>,这将是没有参数。

e.g。

static class MyActions {
  static Dictionary<string,Action> wibble = new Dictionary<string,Action>();
}

我已经使用过static,如果你可以传递引用/检索引用,则没有必要。

然后添加动作...

MyActions.wibble["123456789"] = () => { // do action };

或引用无参数方法

MyActions.wibble["123456789"] = () => MyMethod;

然后调用它;

MyActions.wibble["123456789"]()

假设密钥存在,您可以使用try get或甚至MyActions.wibble["123456789"]?.Invoke()

如果您需要参数,请根据参数的数量制作Action<T>Action<T1, T2>等字典。

例如wibble = new Dictionary<string,Action<int>>()

然后wibble["123456789"] = x => {action with x}

wibble["123456789"](42)