与从Event Handler调用受保护的方法并覆盖受保护的方法相比,覆盖事件处理程序是不好的做法。正在覆盖事件处理程序不良实践
这些是否是任何安全问题,或者是否覆盖事件处理程序的任何副作用。
namespace Testing
{
public class Owner
{
public event EventHandler<EventArgs> OnAction;
}
public class Foo
{
public Foo(Owner owner)
{
owner.OnAction += OnAction;
owner.OnAction += OnAction2;
}
protected virtual void OnAction(object sender, EventArgs eventArgs)
{
}
private void OnAction2(object sender, EventArgs eventArgs)
{
ProtectedMethod();
}
protected virtual void ProtectedMethod()
{
}
}
public class FooDerived: Foo
{
public FooDerived(Owner owner) : base(owner)
{
}
protected override void OnAction(object sender, EventArgs eventArgs)
{
// Do Something
base.OnAction(sender, eventArgs);
}
}
public class FooDrived2: Foo
{
public FooDrived2(Owner owner) : base(owner)
{
}
protected override void ProtectedMethod()
{
// Do something
base.ProtectedMethod();
}
}
}
谢谢,你知道任何事件处理程序被重写.Net框架 – skjagini
@SujithJagini:我不能说我这样做。这不是经常出现的东西,通常如果它涉及多个行为,它最终会分解成多种接口方法。 –