Error del compilador CS0071

Actualización: noviembre 2007

Mensaje de error

Una implementación de interfaz explícita de un evento debe usar la sintaxis de descriptor de acceso de eventos
An explicit interface implementation of an event must use event accessor syntax

Cuando implemente explícitamente un evento declarado en una interfaz, debe proporcionar manualmente los descriptores de acceso de evento add y remove, incluidos normalmente en el compilador. El código de descriptor de acceso puede conectar el evento de interfaz a otro evento de su clase (se muestra más adelante en este tema) o a su propio tipo de delegado. Para obtener más información, vea Cómo: Implementar eventos de interfaz (Guía de programación de C#).

Ejemplo

El código siguiente genera el error CS0071.

// CS0071.cs
public delegate void MyEvent(object sender);

interface ITest
{
    event MyEvent Clicked;
}

class Test : Itest
{
    event MyEvent ITest.Clicked;  // CS0071

    // try the following code instead
/*
private MyEvent clicked;

    event MyEvent Itest.Clicked
    {
        add
        {
            clicked += value;
        }
        remove
        {
            clicked -= value;
        }
    }
*/
    public static void Main() { }
}