0

私のコードでわかるように、メソッドをオブジェクトに保持 (設定) したいのです。そして、そのオブジェクトでメソッドを呼び出します...

コードを見てください。簡単に理解できます。平易な英語で説明するのは難しい...

私の質問は; もちろん、「アクション操作」オブジェクトは、呼び出されるメソッドを保持できません。

では、どうすればこの問題を解決できますか? 私に何ができる?


...
    enum CampaignUserChoice
    {
        Insert,
        Update,
        Delete,
        Disable
    }

private void AskUserAboutCampaignOperation(CampaignUserChoice choice) { string questionForUser = string.Empty; string questionTitleForUser = string.Empty; Action operation; //<<<<--------------------- this line, it's method holder if (choice == CampaignUserChoice.Insert) { questionForUser = "Do you want to create a new campaign?"; questionTitleForUser = "NEW CAMPAIGN"; operation = InsertCampaign(TakeDatasFromGui()); //<---------- set which method you want to call } else { operation = UpdateCampaign( campaignId, TakeDatasFromGui()); } //TODO write other elses... switch (MessageBox.Show(questionForUser, questionTitleForUser, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)) { case DialogResult.Yes: operation; //<<<------------------ call method here... break; case DialogResult.No: // "No" processing break; case DialogResult.Cancel: // "Cancel" processing break; } }

すべての回答をありがとうございました...

4

3 に答える 3

2

デリゲートを使用しようとしています:

operation = TakeDataFromGui;
...
operation();
于 2012-05-31T12:04:08.993 に答える
1

メソッドを呼び出すにはデリゲートが必要です

  //declare delegate declaration same as function
   delegate returntype delegate_name(parameter1,paramenter2,..);

   //assaign function to  delegate
   delegate_name=function();

   //call function
   delagate_name();
于 2012-05-31T12:21:04.597 に答える
1

ラムダ式を使用してデリゲートを割り当てます。

operation = () => InsertCampaign(TakeDatasFromGui()); 

通常の関数のようにアクションを呼び出します。

operation()
于 2012-05-31T12:15:01.317 に答える