Ich verwende eine Klasse, die Ereignisse in C# weiterleitet. Ich habe mich gefragt, ob es eine Möglichkeit gibt, es zu tun, die weniger Code-Overhead benötigt.Weiterleiten von Ereignissen in C#
Hier ist ein Beispiel von dem, was ich bisher habe.
class A
{
public event EventType EventA;
}
class B
{
A m_A = new A();
public event EventType EventB;
public B()
{
m_A.EventA += OnEventA;
}
public void OnEventA()
{
if(EventB)
{
EventB();
}
}
}
Klasse A löst das ursprüngliche Ereignis aus. Class B leitet es als EventB (das ist im Wesentlichen das gleiche Ereignis). Klasse A ist vor anderen Modulen verborgen, sodass sie EventA nicht direkt abonnieren können.
Was ich versuche zu reduzieren ist die Code-Overhead in Klasse B für die Weiterleitung des Ereignisses, da es in der Regel keine echte Behandlung der Ereignisse in Klasse B gibt. Auch ich werde mehrere verschiedene Ereignisse haben, so dass es schreiben würde viele OnEvent() - Methoden in Klasse B, die nur dazu dienen, die Ereignisse weiterzuleiten.
Ist es möglich, automatisch Eventa zu EventB in irgendeiner Weise zu verbinden, also würde ich so etwas wie dieses:
class B
{
A m_A = new A();
public event EventType EventB;
public B()
{
m_A.EventA += EventB; // EventA automatically raises EventB.
}
}
Ich bin mit einem C# 2.0-Compiler btw.
Große Frage, vor allem, da Sie nicht von Eventa austragen sollten vergessen Andernfalls könnte ein Speicherverlust auftreten (Ihr Objekt B bleibt so lange im Speicher, wie A ist, auch wenn es nicht mehr benötigt wird). – dbkk