Znalazłem kilka postów o Podnoszenie wydarzenia z metodę rozszerzenia, ale moje pytanie jest nieco inna:Dodaj zdarzeń przy użyciu metody rozszerzenie
Mam interfejs tak:
public interface IStateMachine
{
void SetState(IState NewState);
IState GetState();
}
Za pomocą tego interfejsu mogę stworzyć metodę rozszerzenia jak następuje:
public static void ChangeState(this IStateMachine StateMachine, IState NewState)
{
StateMachine.GetState().Exit();
StateMachine.SetState(NewState);
StateMachine.GetState().Enter();
}
Co ja naprawdę chcę to, że nie będzie wydarzeń, które muszą zostać zwolniony, np: a statechange-event
.
Jednak nie chcę, aby StatechangeEvent
był częścią interfejsu IStateMachine
, ale wydaje się, że to jedyny sposób. Mam kilka klas, które implementują IStateMachine
, i dlatego muszę powtórzyć ten sam kod za każdym razem.
Dzięki, popatrzę na to. Mam różne klasy, które mogą być IStateMachine. Kiedy robię podstawową klasę abstrakcyjną, mam problemy z dziedziczeniem wielokrotnym. – avanwieringen
@avanwieringen: W takim przypadku lepszym rozwiązaniem wydaje się implementacja pub/sub na interfejsie za pomocą metod rozszerzeń. –