C# 使用委托创建字典
想问一下如何与学员一起制作词典 这个想法是:C# 使用委托创建字典,c#,.net,delegates,C#,.net,Delegates,想问一下如何与学员一起制作词典 这个想法是: 具有由“/”定义的基于控制台的命令 使用dictionary存储将调用所需函数的命令和del 到目前为止,我已经做到了:我通过创建事件成功地做到了这一点 delegate void CmdHandler(string[] cmdArgs); class CMDReader { public event CmdHandler _Print; public event CmdHandler _Help;
delegate void CmdHandler(string[] cmdArgs);
class CMDReader
{
public event CmdHandler _Print;
public event CmdHandler _Help;
private char cmdChar;
}
cmdReader._Print += new CmdHandler(Print);
void Print(string[] args)
但我正在寻找一种无事件管理的方法。我想我可以用字典来做,但不知道怎么做 您可以将委托添加到
字典
,然后使用索引器键(我刚才假设了这里的命令名)调用相应的操作。然而,这种模式的问题在于参数的输入不严格(所有string[]
,对每个参数的含义都有隐含的了解),以及对所有方法的公共返回类型的限制(当前为void
)
公共类CMDReader
{
委托void CmdHandler(字符串[]cmdArgs);//或操作
专用只读IDictionary_命令;
公共CMDReader()
{
_commands=新字典
{
{
“打印”,打印
},
{
“救命”,救命
},
};
}
public void InvokeCommand(string命令,string[]args)
{
if(_commands.ContainsKey(command))
{
_命令[command].Invoke(args);
//或(_commands[command])(args);
}
其他的
{
WriteLine(“我不知道那个命令…”);
}
}
私有无效打印(字符串[]args)
{
//实施
}
私有void帮助(字符串[]args)
{
//实施
}
}
是什么阻止了您使用字典进行尝试?代码中不清楚:是什么决定了调用哪个方法/委托/什么?
public class CMDReader
{
delegate void CmdHandler(string[] cmdArgs); // Or Action<string[]>
private readonly IDictionary<string, CmdHandler> _commands;
public CMDReader()
{
_commands = new Dictionary<string, CmdHandler>
{
{
"Print", Print
},
{
"Help", Help
},
};
}
public void InvokeCommand(string command, string[] args)
{
if (_commands.ContainsKey(command))
{
_commands[command].Invoke(args);
// OR (_commands[command])(args);
}
else
{
Console.WriteLine("I don't know that command ...");
}
}
private void Print(string[] args)
{
// Implementation
}
private void Help(string[] args)
{
// Implementation
}
}