2012-10-22 3 views
2

Dans certains de mes tests de fumée, j'utilise Mono Cecil pour analyser les opcodes de mes assemblys. J'effectue ensuite certaines opérations pour valider la qualité du code, etc. Cependant, je ne me soucie pas vraiment du code généré dans les concepteurs car il n'y a pas grand chose à faire à ce sujet, donc j'exclurai la méthode InitializeComponent. Cela a fonctionné correctement pour WinForms, mais ne semble pas fonctionner pour xaml. En d'autres termes, je suis toujours en train de traiter les instructions dans xaml (c'est-à-dire les événements auxquels je suis abonné). Je sais que xaml est "compilé" en baml et pas en IL, mais Mono Cecil est apparemment encore capable d'obtenir les OpCodes de baml).InitializeComponent équivalent pour xaml

Je lis here et here que XAML, le InitializeComponent appelle la méthode Application.LoadComponent, donc j'ai essayé d'exclure aussi bien, mais je continue à traiter les instructions de XAML. Je vérifie spécifiquement pour l'abonnement de gestionnaire d'événement.

Ma question: Y at-il d'autres méthodes « sous le capot » qui sont appelés lors de la compilation du XAML autre que InitializeComponent ou LoadComponent? En d'autres termes, comment puis-je distinguer les instructions provenant du code-behind (xaml.cs) vs xaml?

Répondre

1

Donc, en creusant à travers MSDN, j'ai trouvé this petite gemme.

Apparemment, le composant IComponentConnector gère à la fois le composant InitializeComponent et Connect (qui gère l'abonnement à l'événement). Il y a donc une petite leçon à propos de WPF par rapport aux Winforms, les événements sont configurés dans InitializeComponent.

Ainsi, la méthode est d'exclure:

System.Windows.Markup.IComponentConnector.Connect();

Questions connexes