我试图在定义它的接口中调用一个事件(请参见下面的代码)。但是,我得到了以下错误:程序。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之后,您实际上可以在接口
中执行方法的默认实现,但只能执行方法,不能执行事件或字段。
如果需要调用事件的预定义方法,可以使用抽象类
而不是接口
。
我有一个定义一些函数的接口IFoo,一个实现IFoo和一些内部函数的抽象类FooBase,还有几个从FooBase派生的类Foo。 我还有一个类Bar,它应该从FooBase调用一个方法,但是它的参数作为IFoo传递。所以所有的东西都是这样的: 如前所述,这感觉不对,因为任何人都可能会出现,编写一个实现IFoo的类Baz并用它调用DoSomething将会失败。 我还发现了这个问题/解决了一个类似
我创建了一个接口,以便可以在对话和片段之间进行通信。 目标:当用户从对话框中选择任何内容时,应将其显示在文本视图中。 在这个界面中,我创建了一个界面方法,在主活动中调用,并传递用户在对话框中选择的值。与用户选择的值一起,在我的片段中,我创建了一个方法,将文本视图设置为该值。然而,每当我调用该方法时,它总是返回null。 我对日志进行了大量测试,发现通过我的方法传递的值不是空的,一切似乎都按照我想要
4.2 接口调用 Camel管理端定义了两个版本的接口。第一版接口路径以"/api/"开头,第二版接口路径以"/api/v2"开头。 两个版本接口的主要区别在于:第二版本接口将更改配置、发布配置文件这两部操作聚合成为一个原子操作。则调用第二版本接口,如果成功,则Nginx当前配置为更改之后的配置;如果失败,则Nginx当前配置为调用接口之前的配置。不会出现不安全的中间状态。 第一版本接口: 更新节
我正在尝试通过与分支内联的am调用c中的外部函数。我正在编译为arm m0指令集,但它返回错误表达式。 代码是: 回报是: 我们需要做什么?
我想创建一个函数,比如一个函数。 这里的回调是可选的。如果调用时没有回调,函数将只使用同步方法(和返回promise)读取文件并直接返回解析的config对象。异常直接抛出。然而,当提供回调时,函数将使用异步方法,并在完成后调用回调。异常直接引发到回调,但不抛出。 有许多类似的代码来执行同步和异步工作,所以我想使用一种方法来实现这两种工作。类似promise的函数如何根据调用方的回调参数检测异步或
问题内容: C ++具有多重继承。汇编级别的多重继承的实现可能非常复杂,但是在线上通常有很好的说明(vtable,指针修复,thunk等)。 Java没有多重实现继承,但是它确实具有多重接口继承,因此我认为每个类只有一个vtable的直接实现无法实现。java如何在内部实现接口? 我意识到与C++相反,Java是Jit编译的,因此不同的代码段可能会进行不同的优化,并且不同的JVM可能会做不同的事情