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