La première solution n'est pas possible car comme tu le dis, (en gros résumé) je passe par une classe qui reçoit une instance de page aspx/ascx afin de déterminer si l'instance contient un composant BackgroundWorkder par exemple.
Pour ce qui est de la réflexion, ce n'est pas envisageable pour la raison suivante :
J'ai créé un user control BaseWebUserControl qui dérive de System.Web.UI.UserControl. C'est ce user control qui doit avoir la logique pour s'interroger afin de vérifier si il existe des composants qui sont liés.
Ensuite, j'ai créé un autre user control MonWebUserControl qui dérive de BaseWebUserControl. où j'ai ajouté via le Component Designer un BackgroundWorker.
Maitnenant, il faut savoir que mon code est exécuté par Visual studio lorsque MonWebUserControl est affiché dans le Designer. Et je peux certifié que l'exécution de la ligne suivante :
if (this is BaseWebUserControl)
Ca me renvoit à chaque fois faux car pour lui this est de type System.Web.UI.UserControl.
(Pour rappel, à aucun moment mon site web tourne, ce serait sûrement différent si c'était le cas).
Donc en conclusion, la réflexion est impossible aussi car je récupère System.Web.UI.UserControl comme type.
Partager