调用接口内部的c#事件



我正试图在定义事件的接口中调用事件(请参阅下面的代码(。但是,我得到以下错误:CCD_ 1
我怀疑这可能与接口中声明的所有事件都是属性有关。这是一个错误,一个功能,有什么解决办法吗?

谢谢。

using System;
public interface IMyInterface
{
event EventHandler? MyEvent;
void CallMyEvent()
{
MyEvent?.Invoke(this, EventArgs.Empty);
}
}
public class MyClass : IMyInterface
{
public event EventHandler? MyEvent;
}
static class Program
{
static void Main()
{
var obj = new MyClass();
obj.CallMyEvent();
}
}

我认为这是因为event EventHandler? MyEvent没有在您的接口中实现,它将在您的类中实现,之后,您可以Invokeit:

public class MyClass : IMyInterface
{
public event EventHandler? MyEvent;
public void CallMyEvent()
{
MyEvent?.Invoke(this, EventArgs.Empty);
}
}

在C#8之后,您实际上可以在interface中默认实现方法,但只能实现方法,不能实现事件。

如果您想要预定义的方法,它将调用事件,您可以使abstract class而不是interface

解决这个问题的唯一方法似乎是在接口外部调用事件。要么使用我试图避免的抽象类,要么使用常规接口方法并放弃DRY代码。

相关内容

  • 没有找到相关文章

最新更新