Ich habe eine Elternklasse, die ein Ereignis zu abgeleiteten Klassen auslöst. Das Problem ist, dass der Event-Handler immer null ist.Event-Handler-Vererbung
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;
}
}
}
dann gibt es einige abgeleitete Klassen, die mit diesem Ereignis verknüpft sind:
class ClassIO : ClassPlugin
{
public ClassIO(eGuiType _guyType) : base(_guyType)
{
...
OnBufferReady += ClassIO_OnBufferReady;
}
private void ClassIO_OnBufferReady(string str)
{
...
}
}
das Problem ist, dass das OnBufferReady Ereignis in der übergeordneten Klasse alway null ist und daher nie gebrannt. Danke für jede Hilfe.
Verwenden Sie 'EventHandler' -basierte Delegaten für Ereignisse. Dies ist per Konvention in C#. –
dymanoid
Ich kann den Grund nicht sehen, warum das Ereignis nicht festgelegt werden konnte. Bitte geben Sie einige Beispiele an, wie Sie die Klassen instanziieren. – dymanoid
@x Aber Basis. ist nicht notwendig, da die abgeleitete Klasse kein onbufferready-Ereignis hat, also automatisch zum übergeordneten Element geht – Luca