Używam klasy, która przekazuje zdarzenia w języku C#. Zastanawiam się, czy istnieje sposób robienia tego, który wymaga mniejszego narzutu kodu.Przekazywanie zdarzeń w języku C#
Oto przykład tego, co do tej pory miałem.
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();
}
}
}
Klasa A podnosi oryginalne wydarzenie. Klasa B przekazuje ją jako EventB (co jest w zasadzie tym samym zdarzeniem). Klasa A jest ukryta przed innymi modułami, więc nie może bezpośrednio zasubskrybować EventA.
Co staram się zrobić, to zmniejszyć obciążenie kodu w klasie B w celu przekazania zdarzenia, ponieważ zazwyczaj nie ma rzeczywistej obsługi zdarzeń w klasie B. Będę też mieć kilka różnych zdarzeń, więc będzie to wymagało pisania wiele metod OnEvent() w klasie B, które służą tylko do przekazywania zdarzeń.
Czy to możliwe, aby automatycznie połączyć Eventa do EventB w jakiś sposób, tak, że mam coś takiego:
class B
{
A m_A = new A();
public event EventType EventB;
public B()
{
m_A.EventA += EventB; // EventA automatically raises EventB.
}
}
Używam kompilatora C# 2.0 btw.
wielkie pytanie, zwłaszcza, że nie należy zapominać, aby wypisać się z Eventa , w przeciwnym razie może wystąpić wyciek pamięci (twój obiekt B pozostanie w pamięci tak długo, jak A, nawet jeśli nie będzie już potrzebny). – dbkk