例如,我有一个基本活动出版方法:
protected virtual OnSomeEvent(EventArgs e)
{
var handler = SomeEvent;
if (handler != null)
{
handler(this, e);
// handler(this, new EventArgs());// EDIT: Yes it should be
// handler(this, e),
// ignore this one :D
}
}
对于高于<代码>OnSomeEvent的衍生产品,在火灾时会增加一个活动:
protected override OnSomeEvent(EventArgs e)
{
base.OnSomeEvent(e);
if (ExtendedEvent != null)
{
OnExtendedEvent(e);
}
}
protected void OnExtendedEvent(EventArgs e)
{
// some stuff done
// new information the ExtendedEventArgs object needs
// is not available until this point
ExtendedEvent(this, new ExtendedEventArgs(someStuff, someOtherStuff));
}
如果衍生物继续如此,它将为每一代衍生产品创造新的衍生工具,而这种活动需要。 然而,在<代码>EventArgs上似乎有各种不同的衍生物。 NET框架并非意在变幻莫测(没有设定者),因此阻止某一物体保持单一事件分析,并随着时间的推移加以修改。
因此,每次像这种火焰这样的事件,它都会重新向所有有关方传承<条码>。 在有图形的密集应用中,如果某项活动可以每秒引发数十次(例如<条码>关于控制的活动>),这是否真正是一种良好做法?
我是否应对<代码>()作一些改动,并作如下改动:Ex 预期EventArg
:
protected ExtendedEventArgs extendedArgs = ExtendedEventArgs.Empty;
protected void OnExtendedEvent(EventArgs e)
{
// some stuff done
// new information the ExtendedEventArgs object needs
// is not available until this point
extendedArgs.someProperty1 = someStuff;
extendedArgs.someProperty2 = someOtherStuff;
ExtendedEvent(this, extendedArgs);
}
EDIT:现在应当更加明确地确定实例代码。