如何在C#中通过接口实现事件?

如何在C#中通过接口实现事件?,c#,interface,C#,Interface,我有一个问题:假设我有一个基于插件的系统 我需要某种接口,我可以用它捕获每个插件的事件,例如实现I报告接口 (IReporting) object.OnSomeEvent += <.....> (IReporting)object.OnSomeEvent+= 但是我找不到这样做的方法。你应该写((I报告)obj.XXX而不是(I报告)obj.XXX 关于插件框架,请查看具有良好体系结构的现有解决方案,例如在实现中有没有一种方法可以做到这一点,而不必在调用((Foo)o).rais

我有一个问题:假设我有一个基于插件的系统

我需要某种接口,我可以用它捕获每个插件的事件,例如实现
I报告
接口

(IReporting) object.OnSomeEvent += <.....>
(IReporting)object.OnSomeEvent+=
但是我找不到这样做的方法。

你应该写((I报告)obj.XXX而不是(I报告)obj.XXX


关于插件框架,请查看具有良好体系结构的现有解决方案,例如

在实现中有没有一种方法可以做到这一点,而不必在调用((Foo)o).raisebo()中转换到具体类Foo?
public interface IFoo
{
    event EventHandler Boo;
}

class Foo : IFoo
{
    public event EventHandler Boo;
    public void RaiseBoo()
    {
        if (Boo != null)
            Boo(this, EventArgs.Empty);
    }
}

...

private void TestClass_Boo(object sender, EventArgs e)
{
    throw new NotImplementedException();
}

    ...

   object o = new Foo();
   ((IFoo)o).Boo += TestClass_Boo;
   ((Foo)o).RaiseBoo();