ho trovato diversi post su eventi di raccolta con un metodo di estensione, ma la mia domanda è un po 'diverso:Aggiungi eventi utilizzando i metodi di estensione
Ho un'interfaccia come questa:
public interface IStateMachine
{
void SetState(IState NewState);
IState GetState();
}
Utilizzando questa interfaccia posso creare un metodo di estensione come segue:
public static void ChangeState(this IStateMachine StateMachine, IState NewState)
{
StateMachine.GetState().Exit();
StateMachine.SetState(NewState);
StateMachine.GetState().Enter();
}
quello che voglio davvero è che non ci saranno eventi che hanno bisogno di essere licenziato, ad esempio: un statechange-event
.
Tuttavia, non voglio che lo StatechangeEvent
faccia parte dell'interfaccia IStateMachine
, ma sembra che sia l'unico modo. Ho diverse classi che implementano IStateMachine
, e quindi devo ripetere lo stesso codice ogni volta.
Grazie, lo guarderò. Ho diversi tipi di classi che possono essere tutte IStateMachine. Quando creo una classe astratta di base, ho problemi con l'ereditarietà multipla. – avanwieringen
@avanwieringen: In tal caso l'implementazione di pub/sub sull'interfaccia tramite i metodi di estensione sembra essere l'idea migliore. –