xaml的InitializeComponent等价物

时间:2012-10-22 18:11:42

标签: wpf xaml .net-4.0 initializecomponent

在我的一些冒烟测试中,我使用Mono Cecil来解析程序集的操作码。然后,我执行一些操作来验证代码质量等。但是,我并不关心设计器中生成的代码,因为我无法做很多事情,所以我将排除InitializeComponent方法。这适用于WinForms,但似乎不适用于xaml。换句话说,我仍在处理xaml中的指令(即正在订阅的事件)。我知道xaml被“编译”成baml而不是IL,但是Mono Cecil显然仍然可以从baml获得OpCodes)。

我在xaml中看到了herehereInitializeComponent调用了Application.LoadComponent方法,所以我也试图排除它,但我仍在处理xaml说明。我特意检查事件处理程序订阅。

我的问题:在编译除InitializeComponentLoadComponent之外的xaml时,是否还有其他“引擎盖”方法?换句话说,我如何区分来自代码隐藏(xaml.cs)和xaml的指令?

1 个答案:

答案 0 :(得分:1)

所以,通过MSDN挖掘,我找到了this小宝石。

显然,IComponentConnector既可以处理InitializeComponent,也可以处理Connect(处理事件订阅)。所以关于WPF和Winforms有一点教训,在InitializeComponent中设置了事件。

因此,要排除的方法是:

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