Я интерфейс, определенный следующим образом:Наследование & События
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);
и базовый класс, который реализует этот интерфейс
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
}
Мой вопрос, как бы вам унаследуют от RipperBase и переопределить метод Rip BaseClass. в действительности эта функция должна быть абстрактной - но я не знаю, как это сделать с интерфейсами.
Также как я могу вызвать обработчик событий базовых классов из класса, полученного из RipperBase? Я пробовал это
RipperEventHandler handler = PreRipEvent;
if (handler != null)
{
handler(this, new RipperEventArgs { Message = "Started Ripping file to CSV!" });
}
handler = RipProgEvent;
это, но я получаю «событие может появляться только с левой стороны + = или - =.» ошибка
всякая помощь была бы принята с благодарностью! Я пытаюсь сделать это максимально масштабируемым.
Большое спасибо! –