0

Ive implemented an event in a object like this:

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

A child og that base tries to invoke it:

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

This part above is broken, VS2012 tells me that I cant use Navigate in that manner.

However, it works fine to "hook" on that event if I instansiate a object of ChildObject:

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

Where did I go wrong? I want to trigger that navigate event in the DoNavigate method.

4

1 回答 1

3

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

如果你想允许子类触发事件,那么创建一个触发事件的protected方法(按照惯例,它会被调用OnNavigate)并且可以从实现类中访问。

于 2013-10-01T17:38:45.307 回答