Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

479
Vistas
Invocar evento c# dentro de la interfaz

Estoy tratando de invocar un evento en la interfaz en la que está definido (ver el código a continuación). Sin embargo, recibo el siguiente error: Program.cs(7,3): error CS0079: The event 'IMyInterface.MyEvent' can only appear on the left hand side of += or -= .
Sospecho que podría tener algo que ver con que todos los eventos declarados en las interfaces sean siempre propiedades. ¿Es esto un error, una característica y hay alguna solución?

Gracias.

 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(); } }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Creo que es porque event EventHandler? MyEvent no está implementado dentro de su interfaz, se implementará dentro de su clase y luego puede Invoke :

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

Después de C# 8, puede realizar la implementación predeterminada de métodos dentro de interface , pero solo métodos, no eventos.

Si desea un método predefinido, eso llamará al evento, puede hacer abstract class en lugar de una interface .

over 4 years ago · Santiago Trujillo Denunciar

0

Parece que la única forma de evitar este problema es invocar el evento fuera de la interfaz. Use una clase abstracta que estaba tratando de evitar, o tenga un método de interfaz regular y abandone el código SECO.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda