我有一個父事件類將事件發射到派生類。問題在於事件處理程序一直爲空。事件處理程序繼承
Class Plugin()
{
public delegate void BufferReadyHandler(string str);
public event BufferReadyHandler OnBufferReady;
public ClassPlugin(eGuiType _guyType)
{
GuiType = _guyType;
}
protected void Sp_DataReceived_Parent(object sender, SerialDataReceivedEventArgs e)
{
strCommonBuffer += serial.ReadExisting();
if (strCommonBuffer.Contains("\r\n"))
{
if (OnBufferReady != null) <<-------NULL
OnBufferReady(strCommonBuffer);
strCommonBuffer = string.Empty;
}
}
}
然後有鏈接到該事件的一些派生類:
class ClassIO : ClassPlugin
{
public ClassIO(eGuiType _guyType) : base(_guyType)
{
...
OnBufferReady += ClassIO_OnBufferReady;
}
private void ClassIO_OnBufferReady(string str)
{
...
}
}
的問題是,在父類中的OnBufferReady事件常是空,因此從來沒有發射。 感謝您的幫助。
請使用'EventHandler'基於事件的代表。這在C#中是慣例。 –
dymanoid
我看不到事件可能未被設置的原因。請提供一些例子,你如何實例化這些類。 – dymanoid
@x但是基地。是沒有必要的,因爲派生類沒有緩衝區事件,所以自動轉到父項 – Luca