当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何通过C#中的接口实现事件?》经验,为你挑选了1个好方法。

我有一个问题:想象一下我有一个基于插件的系统.

我需要某种接口,我可以从每个插件中捕获事件,例如实现IReporting接口.

(IReporting) object.OnSomeEvent += <.....>

但我找不到办法做到这一点.



1> aku..:

而不是(IReporting)obj.XXX你应该写((IReporting)obj).XXX

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();

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

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有