[英]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.