簡體   English   中英

如何通過C#中的接口實現事件?

[英]How to implement events through interface in C#?

我有一個問題:假設我有一個基於插件的系統。

我需要一種可以捕獲每個插件事件的接口,例如IReporting接口。

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

但是我找不到辦法。

而不是(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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM