2011-03-22 1 views
1

Est-il possible de s'inscrire à l'événement qui se déclenche lorsque l'objet du type spécifique est créé, sans modifier l'objet? par exemple, la signature de cet événement de type d'étiquette incendies quand chaque instance de l'étiquette est créée (en passant l'instance de l'étiquette en tant que paramètre)Inscription à l'événement créé par l'objet

désolé pour mon mauvais anglais

Répondre

3

Ce serait mieux accomplie en utilisant une usine modèle. Si vous encapsulez la création de vos objets Label dans LabelFactory, la fabrique d'étiquettes peut également exposer un événement qui se déclenche chaque fois qu'un objet est créé.

Quelque chose comme ceci:

public class LabelFactory  
{  
    public Label GetLabel() {...}  

    public event LabelEventHandler LabelCreated; 
}  
+0

+1 pour une meilleure solution que la mienne. – Tejs

+0

L'usine est une bonne solution, mais pas dans le cas où les étiquettes sont créées par Windows Forms Disigner –

+0

Pouvez-vous déplacer la création d'étiquettes dans votre propre code? Fonctionnellement, il devrait être le même pour le créer dans votre code, où vous pouvez utiliser la méthode Factory. – Thomas

1

Non sans modifier l'objet en question à déclencher un événement dans leur constructeur. La solution d'Adrian est un bon compromis tant que vous passez toujours en usine pour obtenir une nouvelle instance; Cependant, si vous instanciez en dehors de l'usine, aucun événement ne sera déclenché.