2012-04-03 12 views
10

Ho Classe A che implementa un gran numero di istanze di classe B. Classe B incapsula un'istanza della classe C.Passo evento dalla classe C attraverso la classe B alla classe A

Classe genera eventi che devono essere gestito dalla Classe A. La Classe A non ha bisogno di essere informata sulla Classe C. La Classe C sta restituendo statistiche basate sulle prestazioni che A deve quindi fondere.

Come si creano gli eventi in Classe B e li si collega in modo che la Classe A possa sottoscrivere gli eventi di Classe B e ricevere gli eventi dalla Classe C?

+0

dispiace? Classe A * implementa un numero elevato di istanze di Classe B *? Cosa significa esattamente? Fornire un codice per favore –

risposta

21

Un evento non è altro che un paio di metodi che avvolgono un campo delegato. È possibile sostituire l'implementazione predefinita del componente aggiuntivo & rimuovere metodi in ClassB per passare il valore direttamente l'evento in ClassC:

public class ClassB 
{ 
    private ClassC m_C = new ClassC(); 

    public event EventHandler MyEvent 
    { 
     add { m_C.MyEvent += value; } 
     remove { m_C.MyEvent -= value; } 
    } 
}