【发布时间】:2009-03-12 18:32:36
【问题描述】:
我有一个这样定义的接口:
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 继承并覆盖 BaseClass Rip 方法。实际上,该功能应该是抽象的-但我不知道如何使用接口来做到这一点。
另外,我如何从 RipperBase 派生的类中调用基类事件处理程序?我试过这个
RipperEventHandler handler = PreRipEvent;
if (handler != null)
{
handler(this, new RipperEventArgs { Message = "Started Ripping file to CSV!" });
}
handler = RipProgEvent;
这个但我得到“事件只能出现在 += 或 -= 的左侧。”错误
任何帮助将不胜感激!我正在尝试使其尽可能具有可扩展性。
【问题讨论】: