13
我有一個問題:想象我有一個基於插件的系統。如何通過C#中的接口實現事件?
我需要某種接口,我可以從每個插件捕獲事件,它實現了例如IReporting
接口。
(IReporting) object.OnSomeEvent += <.....>
但我找不到辦法做到這一點。
我有一個問題:想象我有一個基於插件的系統。如何通過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
是有一種方法可以在實現中執行此操作,而不必在您的調用中將其轉換爲具體類Foo((Foo)o).RaiseBoo(); ? – Shiv 2017-09-10 22:03:51