在对象的基础上实现事件

时间:2013-10-01 17:35:20

标签: c# events

我在这样的对象中实现了一个事件:

public class BaseObject
{
    public delegate void NavigateHandler(object sender, EventArgs e);
    public virtual event NavigateHandler Navigate;

基础试图调用它的子og:

public class ChildObject : BaseObject
{
    private void DoNavigate()
    {
        Navigate(null, null);

上面的这一部分已经破解,VS2012告诉我,我不能以这种方式使用Navigate

但是,如果我实例化ChildObject的对象,它可以“挂钩”该事件:

ChildObject obj = new ChildObject();
obj.Navigate += foo_Navigate;

我哪里出错了?我想在DoNavigate方法中触发导航事件。

1 个答案:

答案 0 :(得分:3)

您只允许从定义它的类中调用事件。

如果要允许子类触发事件,则创建一个protected方法(按照惯例,它将被称为OnNavigate),它触发事件并可以从实现类中访问。