Tengo una interfaz definida así:
public interface IRipper
{
IRipperHost Host { get; set; }
void Rip(FileStream stream);
event RipperEventHandler OnStart;
event RipperEventHandler OnComplete;
event RipperEventHandler OnProgressChanged;
}
public delegate void RipperEventHandler(object sender, RipperEventArgs e);
y una clase base que implementa esa interfaz
public class RipperBase : IRipper
{
public void Rip(FileStream stream)
{
throw new System.NotImplementedException();
}
public event RipperEventHandler PostRipEvent;
event RipperEventHandler IRipper.OnComplete
{
add
{
if (PostRipEvent != null)
{
lock (PostRipEvent)
{
PostRipEvent += value;
}
}
else
{
PostRipEvent = value;
}
}
remove
{
if (PostRipEvent != null)
{
lock (PostRipEvent)
{
PostRipEvent -= value;
}
}
}
}
... and so on
}
Mi pregunta es ¿cómo se heredan de RipperBase y reemplazar el método BaseClass Rip. en realidad, esa función debe ser abstracta, pero no sé cómo hacer eso con las interfaces.
Además, ¿cómo puedo llamar al controlador de eventos de las clases base de la clase derivada de RipperBase? Intenté esto
RipperEventHandler handler = PreRipEvent;
if (handler != null)
{
handler(this, new RipperEventArgs { Message = Started Ripping file to CSV! });
}
handler = RipProgEvent;
esto, pero estoy obteniendo el evento solo puede aparecer en el lado izquierdo de + = o - =. error
cualquier ayuda sería muy apreciada! Estoy tratando de hacer esto lo más escalable posible.