通常のマルチキャストデリゲートでは、一番最後のデリゲートに対する返り値のみ取得可能です。それぞれのデリゲートに対する返り値を取得する方法を調べてみました。
// tFilterがdelegateになります。
Delegate[] tDelegates = tFilter.GetInvocationList();
昨日のメソッドはこうか書き換えることができます。
昨日
private Filter mFilter;
public bool Accept(Entity aEntity)
{
return this.mFilter(aEntity);
}
変更後
private Filter mFilter;
public bool Accept(Entity aEntity)
{
foreach(Filter tFilter in this.mFilter.GetInvocationList())
{
if(!tFilter(aEntity))
{
return false;
}
}
return true;
}
0件のコメント