2009-03-26 4 views
0

私はTypeTの1つのパラメータをとり、1つの値を返すfuncを持っています。funcをディクショナリに格納するときにパラメータ型が割り当てられない

ので、同様に、私は、辞書でそれを保存したい:

Dictionary<CustomerMilestones, Func<string, string>> coll = new Dictionary<CustomerMilestones, Func<string, string>>(); 

string Indicator = coll[CustomerMilestones.Ordered100Products].Invoke(customerId.ToString()); 

coll.Add(CustomerMilestones.Ordered100Products, Execute(Indicator); 

を実行し、文字列を取るだけでなく、文字列を返すメソッドです。最後の行では、次のようにエラーが発生します。

引数タイプstringは、パラメータタイプFuncに割り当てられません。

私は間違っていますか?

答えて

5

あなたはが実行を呼び出すべきではありません - あなただけのメソッドグループとしてそれを提供する必要があります。

coll.Add(CustomerMilestones.Ordered100Products, Execute); 
+0

ありがとうございます!私は代理人、Funcsと同様の概念に気づいたが、かっこは省略されている。これはメソッドグループになります。メソッドグループは正確に何ですか(いくつかのサイトでは、同様のオーバーロードを持つ単なるメソッド群があります)。 – dotnetdev

+0

はい、同様のオーバーロードを持つ単なるグループのメソッドです。正しいオーバーロードは、メソッドグループを割り当て/渡そうとしているデリゲートタイプに基づいて選択されます。弱者のために+1 –

2

私が正しく理解していれば、あなたがの結果、Executeメソッドではない渡しする必要があります実行の呼び出し

coll.Add(CustomerMilestones.Ordered100Products、Execute);

+0

+1彼は彼に、ジョンはより多くの銀のバッジを持っています。 – Samuel

+0

ありがとう、私はポストのために1秒遅れていたと思う:D – Jeremy