gpt4 book ai didi

c# - C#中如何通过接口(interface)实现事件?

转载 作者:可可西里 更新时间:2023-11-01 08:02:51 25 4
gpt4 key购买 nike

我有一个问题:假设我有一个基于插件的系统。

我需要某种接口(interface),通过它我可以从每个插件捕获事件,该插件实现了例如 IReporting 接口(interface)。

(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

关于c# - C#中如何通过接口(interface)实现事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/465318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com