, Action<,> EventHandler , .
public static event Action<object, EventArgs> ObjectWasCreated;
public static event Action<object, EventArgs> ObjectWasDeleted;
void DispatchEvent(Action<object, EventArgs> handler, object sender, EventArgs args)
{
if (handler != null)
{
handler(sender, args);
}
}
public static event EventHandler ObjectWasCreated;
public static event EventHandler ObjectWasDeleted;
void DispatchEvent(EventHandler handler, object sender, EventArgs args)
{
if (handler != null)
{
handler(sender, args);
}
}
.
DispatchEvent(ObjectWasCreated, sender, args);
DispatchEvent(ObjectWasDeleted, sender, args);
.
dynamic, , DynamicInvoke:
void DispatchEvent(MulticastDelegate handler, object sender, EventArgs args)
{
if (handler != null)
{
((dynamic)handler)(sender, args);
}
}
:
void DispatchEvent<T>(T handler, object sender, EventArgs args)
{
if (handler != null)
{
((dynamic)handler)(sender, args);
}
}
dynamic :
MulticastDelegate + dynamic ( ) = > 40
+ ( ) = > 90
MulticastDelegate + DynamicInvoke ( ) = > 940