『刨根问底のWPF学习』一、一个最简单的WPF应用的逆向分析记录

1.创建一个最简单的TestWpf项目,什么代码都不写,如下图所示:

2.鄙人是那种喜欢知其然知其所以然的人,突然看到这一坨代码实在有点蛋疼。

   没办法,只能按照鄙人的学习习惯,一边查阅资料,一边通过逆向分析的方法弄明白这一坨代码究竟是怎么回事。

1.<Window x:Class="TestWpf.MainWindow"
2.        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3.        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4.        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5.        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6.        xmlns:local="clr-namespace:TestWpf"
7.        mc:Ignorable="d"
8.        Title="MainWindow" Height="450" Width="800">
9.     <Grid>    
10.    </Grid>
11.</Window>

3.首先来看最外面这个标签,就是一对<Window></Window>,似乎看上去也很简单嘛。Window,顾名思义就是程序创建了一个窗口呗。

   那么问题来了,这个Window是从哪里来的呢,就好比我们一个Int32这个类型,是属于System这个名称空间。

   那么这个Window,是属于哪个名称空间呢,是从哪里引用的呢,引用的是哪个dll的呢?

<Window>
</Window>

4.这还不简单,对着Window这个标签按F12,不就直接转到定义了吗,我们来看看。

   

   原来这个Window的名称空间是属于PresentationFramework.dll这个程序集下面的。

   绝对路径在:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\PresentationFramework.dll

5.按照本屌的一贯作风,肯定是找到这个PresentationFramework.dll,反编译看一番再说。

   的确很快找到了System.Windows这个类。

6.这就完了?当然不是,我们再来看看还有啥牛逼的信息没有。

   我们看到,这个程序集还写了一堆花里胡哨的东西,这些是什么东东?

   

7.带着第6点的疑问我们继续往下分析

猜你喜欢

转载自www.cnblogs.com/fuhua/p/11921173.html