【发布时间】:2009-01-21 13:36:19
【问题描述】:
我有一个问题:假设我有一个基于插件的系统。
我需要某种接口来捕获每个插件的事件,例如实现IReporting 接口。
(IReporting) object.OnSomeEvent += <.....>
但我找不到这样做的方法。
【问题讨论】:
我有一个问题:假设我有一个基于插件的系统。
我需要某种接口来捕获每个插件的事件,例如实现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
【讨论】: