クラスで戻り値付のイベントを定義してみたものの、最後に実行されたイベントの戻り値しか取得できなくて困ったことありませんか?
———————————-
static event Func
Func
Func
evnt += func1;
evnt += func2;
var ret = evnt();
———————————-
この場合、func2の戻り値しか取得できません。
func1の戻り値は破棄されます。
そんな時はGetInvocationList()を使いましょう。
———————————-
Func
Func
evnt += func1;
evnt += func2;
var il = evnt.GetInvocationList();
foreach (Func
{
var rr = i();
Trace.WriteLine(rr);
}
———————————-
これで、イベントを個別に実行して戻り値を取得できます。
戻り値によって以後のイベントの実行を停止することもできます。