web-dev-qa-db-ja.com

インターフェイス内のC#イベントを呼び出す

私はそれが定義されているインターフェース内のイベントを起動しようとしています(下記のコードを参照)。ただし、次のエラーが発生します。Program.cs(7,3): error CS0079: The event 'IMyInterface.MyEvent' can only appear on the left hand side of += or -=
[。]インターフェイスで宣言されているすべてのイベントが常にプロパティであると思う可能性があると思う可能性があると思われる。これはバグ、機能、そして回避策はありますか?

ありがとう。

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();
    }
}
 _
3
Edmond_ _Dantes

この問題を回避する唯一の方法は、インターフェイス外のイベントを呼び出すことです。私が回避しようとしていた抽象クラスを使用するか、通常のインターフェースメソッドを持ち、DRYコードを与えます。

0
Edmond_ _Dantes