我在这样的对象中实现了一个事件:
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
方法中触发导航事件。
答案 0 :(得分:3)
您只允许从定义它的类中调用事件。
如果要允许子类触发事件,则创建一个protected
方法(按照惯例,它将被称为OnNavigate
),它触发事件并可以从实现类中访问。