C# 以未知参数作为值的操作字典

C# 以未知参数作为值的操作字典,c#,C#,我必须创建一个命令字典,命令(字符串)是键,命令映射到的函数是值。 我面临的问题是,命令映射到的函数具有不同类型的不同数量的参数 我如何做到这一点?最好是这样,我可以将函数添加为lambda表达式 例如,dictionary.Add(“square”,x=>x*x) 编辑:所有映射函数返回void。为什么不使用字典。以下是示例: public class Command1 : ICommand { public event EventHandler CanExecuteChanged;

我必须创建一个命令字典,命令(字符串)是键,命令映射到的函数是值。 我面临的问题是,命令映射到的函数具有不同类型的不同数量的参数

我如何做到这一点?最好是这样,我可以将函数添加为lambda表达式

例如,
dictionary.Add(“square”,x=>x*x)


编辑:所有映射函数返回void。

为什么不使用
字典
。以下是示例:

public class Command1 : ICommand
{
    public event EventHandler CanExecuteChanged;

    public bool CanExecute(object parameter)
    {
        throw new NotImplementedException();
    }

    public void Execute(object parameter)
    {
        //user your first lambda here
    }
}

public class Command2 : ICommand
{
    public event EventHandler CanExecuteChanged;

    public bool CanExecute(object parameter)
    {
        throw new NotImplementedException();
    }

    public void Execute(object parameter)
    {
        //use your second lambda here
    }
}
然后这样使用它们:

Dictionary<string, ICommand> dictionary = new Dictionary<string, ICommand>();

dictionary.Add("Command1", new Command1());

dictionary.Add("Command2", new Command2());
Dictionary Dictionary=newdictionary();
添加(“Command1”,newcommand1());
添加(“Command2”,newcommand2());

如果值具有不同的类型(
Func
Func
等),这有什么用处?在通过键获得值后,如何知道将值转换为哪种类型?命令是硬编码的,因此我知道需要添加哪些命令。这是我考试的一项作业,要求我将这些函数映射到字典。@K.Vestermark如果你只是让调用者根据他们对结果的预先了解来硬编码,使用通用数据结构没有意义。不要认为这会有用,而且它看起来不像正确的方法。简短版本:使用基本类型
Delegate
作为值。在调用站点,您要么在编译时知道签名,要么不知道签名;如果是这样,只需将编译时强制转换包含到正确的委托类型即可。如果不是,则将参数放入数组中并调用
DynamicInvoke()