MulticastDelegate
同じ署名を持つ多数の(レガシー)デリゲートの1つを参照できるがあります。例えば:
public delegate void ObjectCreated(object sender, EventArgs args);
public delegate void ObjectDeleted(object sender, EventArgs args);
//...
これらのデリゲートは、イベントを定義するために使用されます。
public event ObjectCreated ObjectWasCreated;
public event ObjectDeleted ObjectWasDeleted;
次に、MulticastDelegate
いくつかの一般的なチェックを行うために使用するを取り込むメソッドがあります。
void DispatchEvent(MulticastDelegate handler, object sender, EventArgs args)
{
if (handler != null)
{
// ...
handler.DynamicInvoke(sender, args);
}
}
これは、イベントが定義されたクラスの他のメソッド内から呼び出されます。
DispatchEvent(ObjectWasCreated, sender, args);
DispatchEvent(ObjectWasDeleted, sender, args);
DynamicInvokeを回避する、これを行うためのより簡潔な方法はありますか?