2017-05-02 10 views
-1

私は、コマンド(文字列)をキーとし、コマンドが値としてマッピングされる関数を持つコマンドの辞書を作成する必要があります。 私が直面している問題は、コマンドがマッピングされている関数がさまざまな種類のパラメータを持つことです。未知のパラメータを持つアクションのある辞書

どうすればよいですか?好ましくは、ラムダ式として関数を追加できるようにします。

Ex。 dictionary.Add("square", x => x * x)

EDIT:マップされたすべての関数は、voidを返します。

+3

値は、二重の異なる種類( 'のFunc <、ダブルダブル>' 'のFunc 'など)?キーで値を取得した後、値をキャストする型をどのように知っていますか? – Sweeper

+0

コマンドはハードコードされているので、どのコマンドを追加する必要があるのか​​分かります。これは私の試験のための課題であり、これらの機能を辞書にマッピングする必要があります。 –

+0

@ K.Vestermarkもしあなたが呼び出し元に前知識と結果に基づいて呼び出し側のハードコードを行うつもりなら、汎用データ構造を使うことには意味がありません。 – Servy

答えて

0

なぜ使用しないのですかDictionary<string, ICommand>ここではサンプルです:

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()); 
関連する問題