我试图在定义它的接口中调用一个事件(请参见下面的代码)。但是,我得到了以下错误:程序。cs(7,3):错误CS0079:事件“IMyInterface”。MyEvent'只能出现在=或-=
的左侧
我怀疑这可能与接口中声明的所有事件都始终是属性有关。这是一个bug、一个特性吗?有什么解决方法吗?
谢谢。
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();
}
}
我想是因为事件EventHandler?我的事件
不是在你的接口中实现的,它将在你的类中实现,之后,你可以调用它:
public class MyClass : IMyInterface
{
public event EventHandler? MyEvent;
public void CallMyEvent()
{
MyEvent?.Invoke(this, EventArgs.Empty);
}
}
在C#8之后,您实际上可以在接口
中执行方法的默认实现,但只能执行方法,不能执行事件或字段。
如果需要调用事件的预定义方法,可以使用抽象类
而不是接口
。