Ich habe eine Schnittstelle wie so definiert:Vererbung & Events
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);
und eine Basisklasse, die implementiert, die eine Schnittstelle
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
}
Meine Frage ist, wie würde Sie vererben RipperBase und überschreiben Sie die BaseClass Rip-Methode. In der Realität sollte diese Funktion abstrakt sein - aber ich weiß nicht, wie ich das mit Schnittstellen machen soll.
Wie kann ich auch den Basisklassen-Event-Handler aus der von RipperBase abgeleiteten Klasse aufrufen? Ich habe versucht, diesen
RipperEventHandler handler = PreRipEvent;
if (handler != null)
{
handler(this, new RipperEventArgs { Message = "Started Ripping file to CSV!" });
}
handler = RipProgEvent;
dies aber ich bin immer das „Ereignis nur auf der linken Seite von + = oder erscheinen kann -. =“ Fehler
jede Hilfe würde sehr geschätzt werden! Ich versuche, dies so skalierbar wie möglich zu machen.
Vielen Dank! –