アクションの辞書を作成してループで実行しようとしています。 This質問が助けられましたが、辞書にアクションを追加するときにコンパイルエラーが発生します: - No overload for 'Action' matches delegate 'Action'.
アクションの辞書を作成して実行する
ありがとうございました。
Dictionary<string, Action> dActions = new Dictionary<string, Action>();
// do the actions need to be created?
Action<string, int> actSpot = new Action<string, int>(oBSM.Spot);
Action<string, int> actDelta = new Action<string, int>(oBSM.Delta);
dActions["Spot"] = new Action(actSpot);
dActions["Delta"] = new Action(actDelta);
// or add action to dictionary?
dActions.Add("Spot", oBSM.Spot(string BookOrComp, int DP);
dActions.Add("Delta", oBSM.Delta(string BookOrComp, int DP);
foreach (var BookOrComp in ListBookOrComp)
{
foreach (string Key in dActions.Keys)
{
for (int DP = 1; DP <= 21; DP++)
{
dActions[Key]();
}
}
}
更新: 私はまだ
Dictionary<string, Action> dActions = new Dictionary<string, Action>();
// create actions
Action<string, int> actSpot = new Action<string, int>(oBSM.Spot);
Action<string, int> actDelta = new Action<string, int>(oBSM.Delta);
dActions["Spot"] = new Action(actSpot); // no overload for Action matches delegate Action
dActions["Delta"] = new Action(actDelta); // ditto
foreach (var BookOrComp in ListBookOrComp)
{
foreach (string Key in dActions.Keys)
{
for (int DP = 1; DP <= 21; DP++)
{
dActions[Key](BookOrComp,DP); // delegate Action does not take 2 arguments
}
}
}
ありがとう - 括弧を逃す私の愚か。私はオブジェクトを作成し、それを辞書に追加することに同意します。私は '' dActions ["Spot"] =新しいアクション(actSpot)の行でこれを試しましたが、 ''コンパイルエラーが発生しました。 '' dActions [Key](BookOrComp、DP); '' – Zeus
Juan、私はあなたの答えに従いましたが、コンパイルエラーが発生しました。私の更新を見てください。もう一度見てもらえますか? – Zeus
"dActions"の簡単な方法です。Add( "Spot"、actSpot); dActions.Add( "Delta"、actDelta); ''は動作しているようです。これは辞書にアクションを追加する正しい方法ですか? – Zeus