派生クラスに対してイベントを発生させる親クラスがあります。問題は、イベントハンドラが常にnullであることです。イベントハンドラの継承
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しかし、塩基。派生クラスがonbufferreadyイベントを持たないので、自動的に親に行くので、不要です。 – Luca