以前好多文章都是转载的,现在终于也想自己动手写文章了,已经好久没自己写文章了,希望这篇文章能在以后复习的时候,让自己少走一点弯路。
1.熟悉partial
在vs2003中我们经常会发现在每个类都是一个单独的文件,这样让人感觉起来很烦琐,因为类中好多内容都是IDE(也就是VS2003)自己生成的,开发人员并不是很关注它的存在,但它却并没有被隐藏起来,这样的话,开发人员就会感到代码的冗余性,由此引发出了partial部分类的定义,这个可以将一个类分成几个部分的部分类,然后由CLR编译后,在根据partial关键字和是否是同一类来将多个部分类整合成为一个类,注意这里的动作都是编译器来完成的,感觉每次微软在发布新产品的时候,东西都要和旧产品有很大出入,不过,它使编程更加傻瓜话了。VS2005引入了partial类
在winform中 vs2005IDE自动生成3个类:Form1.cs,Form1.Designer.cs,Program.cs,前两者引入了部分类的效果,Program.cs把entryPoint也就是入口点定位到了一个类中,这样开发人员不必要看到IDE是怎么来设计Form的,也就使代码更加简单,直观了,分工更加明确了。
Form1:
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
namespace
WindowsApplication2
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
public partial class Form1 : Form
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
public Form1()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
InitializeComponent();
}
}
}
Form1.Designer.cs:
namespace
WindowsApplication2
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
partial class Form1
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if (disposing && (components != null))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
components.Dispose();
}
base.Dispose(disposing);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Text = "Form1";
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
#endregion
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
在winform中我们可以很直观的观察到partial的应用,而在webform中我们却发现有了很大出入,这个将会在稍后讲到
2.partial应用的注意事项
(1)必须在每个部分声明上重复出现的类型声明元素
(2)在每个部分声明上可选重复出现的类型声明元素:
可以出现的类型声明元素,可以重复出现在同一类型的不同的部分定义上。最后的效果将是每个部分声明上的这些类型声明元素效果的并集。
- abstract和sealed关键字
- 类型的可见性即访问级别
- 类型的基类(注意出现不同的基类的时候,会报错)
- 类型参数的一组约束
(3)在多个部分声明上重复出现就会累积效果的类型声明元素
C# 2.0会自动检测出冲突的错误,比如在同一个类的多个部分声明中定义相同的方法
- 成员:定义在多个源文件中的某一个类型的成员就是每个部分定义中成员的总合
- attribute:定义在多个源文件中的某一个类型的attribute就是每个部分定义中attribute的总合
- 实现的接口:定义在多个源文件中的某一个类型所实现的接口就是每个部分定义中所实现的接口的总合
热身完了,现在进入今天的正题:
寻找asp.net 2.0 partial的兄弟们:
我们先用vs2005建立一个web程序,随便建立一个webform,名字任意这里生成xdfgs.aspx和xdfgs.aspx.cs
xdfgs.aspx.cs:
using
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
public
partial
class
xdfgs : System.Web.UI.Page
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
protected void Page_Load(object sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
}
xdfgs.aspx:
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
xdfgs.aspx.cs
"
Inherits
=
"
xdfgs
"
%>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<!
DOCTYPE html PUBLIC
"
-//W3C//DTD XHTML 1.0 Transitional//EN
"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
"
>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<
html xmlns
=
"
http://www.w3.org/1999/xhtml
"
>
<
head runat
=
"
server
"
>
<
title
>
无标题页
</
title
>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
</
head
>
<
body
>
<
form id
=
"
form1
"
runat
=
"
server
"
>
<
div
>
<
asp:TextBox ID
=
"
TextBox1
"
runat
=
"
server
"
></
asp:TextBox
>
<
asp:Button ID
=
"
Button1
"
runat
=
"
server
"
Text
=
"
Button
"
/>
</
div
>
</
form
>
</
body
>
</
html
>
这里partial声明的部分类却没有找到令一半,去掉以后又不可以,这就很郁闷了,没关系,我们今天的工作就是寻找其他部分。
运行后,我们会发现vs2005自己有专门的服务器应用程序webdev.webserver.exe来专门运行web application应用程序,我应该知道既然在我们建立源文件的那个文件中没有dll文件,然后它却能运行,这说明它已经被编译了,至于存在什么地方这就是我现在开始要找的东西了,利用我的电脑当中的搜索功能:
- 文件名不写
- 文件中的一个字和词组写入:partial class xdfgs
- 在这里查找找到:C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727
这样点击查找后,可以找到四个cs文件,仔细观察下他的日期他们当中两两一致,如果是第一次编译,会只有两个,当第二次编译的时候就会出现四个,这就说明有两个cs文件是上次运行时候某个工具解析出来的结果,两个cs文件是这次运行时候解析的结果。他们都是在临时文件夹中的,名字是由解析工具随机生成的,那现在来看看他里面有什么内容
![](https://p-blog.csdn.net/images/p_blog_csdn_net/ranlianjie/QQ截图未命名.bmp)
App_Web_ngewhs4b.1.cs:
#pragma
checksum "G:5项目程序GetSchemaßgs.aspx" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "D942C953B6978D37F884F3C9D47AE955"
//
------------------------------------------------------------------------------
//
<auto-generated>
//
此代码由工具生成。
//
运行库版本:2.0.50727.832
//
//
对此文件的更改可能会导致不正确的行为,并且如果
//
重新生成代码,这些更改将会丢失。
//
</auto-generated>
//
------------------------------------------------------------------------------
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
public
partial
class
xdfgs : System.Web.SessionState.IRequiresSessionState
...
{
#line 13 "G:5项目程序GetSchemaßgs.aspx"
protected global::System.Web.UI.WebControls.TextBox TextBox1;
#line default
#line hidden
#line 14 "G:5项目程序GetSchemaßgs.aspx"
protected global::System.Web.UI.WebControls.Button Button1;
#line default
#line hidden
#line 11 "G:5项目程序GetSchemaßgs.aspx"
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
#line default
#line hidden
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
protected System.Web.Profile.DefaultProfile Profile ...{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
get ...{
return ((System.Web.Profile.DefaultProfile)(this.Context.Profile));
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
protected System.Web.HttpApplication ApplicationInstance ...{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
get ...{
return ((System.Web.HttpApplication)(this.Context.ApplicationInstance));
}
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
namespace
ASP
...
{
#line 320 "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Configweb.config"
using System.Web.Profile;
#line default
#line hidden
#line 315 "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Configweb.config"
using System.Text.RegularExpressions;
#line default
#line hidden
#line 317 "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Configweb.config"
using System.Web.Caching;
#line default
#line hidden
#line 313 "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Configweb.config"
using System.Configuration;
#line default
#line hidden
#line 312 "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Configweb.config"
using System.Collections.Specialized;
#line default
#line hidden
#line 13 "G:5项目程序GetSchemaßgs.aspx"
using System.Web.UI.WebControls.WebParts;
#line default
#line hidden
#line 324 "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Configweb.config"
using System.Web.UI.HtmlControls;
#line default
#line hidden
#line 13 "G:5项目程序GetSchemaßgs.aspx"
using System.Web.UI.WebControls;
#line default
#line hidden
#line 321 "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Configweb.config"
using System.Web.UI;
#line default
#line hidden
#line 311 "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Configweb.config"
using System.Collections;
#line default
#line hidden
#line 310 "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Configweb.config"
using System;
#line default
#line hidden
#line 319 "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Configweb.config"
using System.Web.Security;
#line default
#line hidden
#line 316 "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Configweb.config"
using System.Web;
#line default
#line hidden
#line 318 "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Configweb.config"
using System.Web.SessionState;
#line default
#line hidden
#line 314 "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Configweb.config"
using System.Text;
#line default
#line hidden
[System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
public class xdfgs_aspx : global::xdfgs, System.Web.IHttpHandler ...{
private static bool @__initialized;
private static object @__fileDependencies;
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
public xdfgs_aspx() ...{
string[] dependencies;
#line 912304 "G:5项目程序GetSchemaßgs.aspx.cs"
((System.Web.UI.Page)(this)).AppRelativeVirtualPath = "~/xdfgs.aspx";
#line default
#line hidden
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
if ((global::ASP.xdfgs_aspx.@__initialized == false)) ...{
dependencies = new string[2];
dependencies[0] = "~/xdfgs.aspx";
dependencies[1] = "~/xdfgs.aspx.cs";
global::ASP.xdfgs_aspx.@__fileDependencies = this.GetWrappedFileDependencies(dependencies);
global::ASP.xdfgs_aspx.@__initialized = true;
}
this.Server.ScriptTimeout = 30000000;
}
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
private global::System.Web.UI.HtmlControls.HtmlTitle @__BuildControl__control3() ...{
global::System.Web.UI.HtmlControls.HtmlTitle @__ctrl;
#line 7 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl = new global::System.Web.UI.HtmlControls.HtmlTitle();
#line default
#line hidden
System.Web.UI.IParserAccessor @__parser = ((System.Web.UI.IParserAccessor)(@__ctrl));
#line 7 "G:5项目程序GetSchemaßgs.aspx"
@__parser.AddParsedSubObject(new System.Web.UI.LiteralControl("无标题页"));
#line default
#line hidden
return @__ctrl;
}
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
private global::System.Web.UI.HtmlControls.HtmlHead @__BuildControl__control2() ...{
global::System.Web.UI.HtmlControls.HtmlHead @__ctrl;
#line 6 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl = new global::System.Web.UI.HtmlControls.HtmlHead("head");
#line default
#line hidden
global::System.Web.UI.HtmlControls.HtmlTitle @__ctrl1;
#line 6 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl1 = this.@__BuildControl__control3();
#line default
#line hidden
System.Web.UI.IParserAccessor @__parser = ((System.Web.UI.IParserAccessor)(@__ctrl));
#line 6 "G:5项目程序GetSchemaßgs.aspx"
@__parser.AddParsedSubObject(@__ctrl1);
#line default
#line hidden
return @__ctrl;
}
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
private global::System.Web.UI.WebControls.TextBox @__BuildControlTextBox1() ...{
global::System.Web.UI.WebControls.TextBox @__ctrl;
#line 13 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl = new global::System.Web.UI.WebControls.TextBox();
#line default
#line hidden
this.TextBox1 = @__ctrl;
@__ctrl.ApplyStyleSheetSkin(this);
#line 13 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl.ID = "TextBox1";
#line default
#line hidden
return @__ctrl;
}
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
private global::System.Web.UI.WebControls.Button @__BuildControlButton1() ...{
global::System.Web.UI.WebControls.Button @__ctrl;
#line 14 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl = new global::System.Web.UI.WebControls.Button();
#line default
#line hidden
this.Button1 = @__ctrl;
@__ctrl.ApplyStyleSheetSkin(this);
#line 14 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl.ID = "Button1";
#line default
#line hidden
#line 14 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl.Text = "Button";
#line default
#line hidden
return @__ctrl;
}
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
private global::System.Web.UI.HtmlControls.HtmlForm @__BuildControlform1() ...{
global::System.Web.UI.HtmlControls.HtmlForm @__ctrl;
#line 11 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl = new global::System.Web.UI.HtmlControls.HtmlForm();
#line default
#line hidden
this.form1 = @__ctrl;
#line 11 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl.ID = "form1";
#line default
#line hidden
System.Web.UI.IParserAccessor @__parser = ((System.Web.UI.IParserAccessor)(@__ctrl));
#line 11 "G:5项目程序GetSchemaßgs.aspx"
@__parser.AddParsedSubObject(new System.Web.UI.LiteralControl(" <div> "));
#line default
#line hidden
global::System.Web.UI.WebControls.TextBox @__ctrl1;
#line 11 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl1 = this.@__BuildControlTextBox1();
#line default
#line hidden
#line 11 "G:5项目程序GetSchemaßgs.aspx"
@__parser.AddParsedSubObject(@__ctrl1);
#line default
#line hidden
#line 11 "G:5项目程序GetSchemaßgs.aspx"
@__parser.AddParsedSubObject(new System.Web.UI.LiteralControl(" "));
#line default
#line hidden
global::System.Web.UI.WebControls.Button @__ctrl2;
#line 11 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl2 = this.@__BuildControlButton1();
#line default
#line hidden
#line 11 "G:5项目程序GetSchemaßgs.aspx"
@__parser.AddParsedSubObject(@__ctrl2);
#line default
#line hidden
#line 11 "G:5项目程序GetSchemaßgs.aspx"
@__parser.AddParsedSubObject(new System.Web.UI.LiteralControl(" </div> "));
#line default
#line hidden
return @__ctrl;
}
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
private void @__BuildControlTree(xdfgs_aspx @__ctrl) ...{
#line 1 "G:5项目程序GetSchemaßgs.aspx"
this.InitializeCulture();
#line default
#line hidden
System.Web.UI.IParserAccessor @__parser = ((System.Web.UI.IParserAccessor)(@__ctrl));
#line 1 "G:5项目程序GetSchemaßgs.aspx"
@__parser.AddParsedSubObject(new System.Web.UI.LiteralControl(" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3" +
".org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1" +
"999/xhtml" > "));
#line default
#line hidden
global::System.Web.UI.HtmlControls.HtmlHead @__ctrl1;
#line 1 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl1 = this.@__BuildControl__control2();
#line default
#line hidden
#line 1 "G:5项目程序GetSchemaßgs.aspx"
@__parser.AddParsedSubObject(@__ctrl1);
#line default
#line hidden
#line 1 "G:5项目程序GetSchemaßgs.aspx"
@__parser.AddParsedSubObject(new System.Web.UI.LiteralControl(" <body> "));
#line default
#line hidden
global::System.Web.UI.HtmlControls.HtmlForm @__ctrl2;
#line 1 "G:5项目程序GetSchemaßgs.aspx"
@__ctrl2 = this.@__BuildControlform1();
#line default
#line hidden
#line 1 "G:5项目程序GetSchemaßgs.aspx"
@__parser.AddParsedSubObject(@__ctrl2);
#line default
#line hidden
#line 1 "G:5项目程序GetSchemaßgs.aspx"
@__parser.AddParsedSubObject(new System.Web.UI.LiteralControl(" </body> </html> "));
#line default
#line hidden
}
#line 912304 "G:5项目程序GetSchemaßgs.aspx.cs"
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
protected override void FrameworkInitialize() ...{
base.FrameworkInitialize();
this.@__BuildControlTree(this);
this.AddWrappedFileDependencies(global::ASP.xdfgs_aspx.@__fileDependencies);
this.Request.ValidateInput();
}
#line default
#line hidden
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
public override int GetTypeHashCode() ...{
return 1906785201;
}
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
public override void ProcessRequest(System.Web.HttpContext context) ...{
base.ProcessRequest(context);
}
}
}
这里只看重点的,这里出现了partial的另一个类,其实这段代码是由工具解析相应的aspx文件自动生成的,#line只是个指令而已,经过CLR编译后就没有了
public
partial
class
xdfgs : System.Web.SessionState.IRequiresSessionState
...
{
#line 13 "G:5项目程序GetSchemaßgs.aspx"
protected global::System.Web.UI.WebControls.TextBox TextBox1;
#line default
#line hidden
#line 14 "G:5项目程序GetSchemaßgs.aspx"
protected global::System.Web.UI.WebControls.Button Button1;
#line default
#line hidden
#line 11 "G:5项目程序GetSchemaßgs.aspx"
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
#line default
#line hidden
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
protected System.Web.Profile.DefaultProfile Profile ...{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
get ...{
return ((System.Web.Profile.DefaultProfile)(this.Context.Profile));
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
protected System.Web.HttpApplication ApplicationInstance ...{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
get ...{
return ((System.Web.HttpApplication)(this.Context.ApplicationInstance));
}
}
}
在这个类中有了控件声明,还多两个属性
奇怪的是出现的另一个文件的内容中的类居然和xdfgs.aspx.cs相同,这就意味着需要加载进来这个文件,然后生成一个新的文件App_Web_ngewhs4b.2.cs
App_Web_ngewhs4b.2.cs:
#pragma
checksum "G:5项目程序GetSchemaßgs.aspx.cs" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "FF98B841E60E7C02BA62CEB33820A5A2"
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
#line
1 "G:5项目程序GetSchemaßgs.aspx.cs"
using
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
public
partial
class
xdfgs : System.Web.UI.Page
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
protected void Page_Load(object sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
#line
default
#line
hidden
然后编译器就可以将这两个cs文件编译,将当中的部分类整和成一个类了,最后生成一个App_Web_ngewhs4b.dll程序集当中包含两个有两个类值得关注一个是 xdfgs 命名空间是"_" 而令一个是 xdfgs_aspx 命名空间是"asp",很奇怪吧 后者是由编译器,造成的命名空间是"asp"的,前者是默认的没有给命名空间的时候都放在"_"命名空间中
用reflector来查看,他们被整合在一起了:
xdfgs.cs:
public
class
xdfgs : Page, IRequiresSessionState
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
// Fields
protected Button Button1;
protected HtmlForm form1;
protected TextBox TextBox1;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
// Methods
protected void Page_Load(object sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
// Properties
protected HttpApplication ApplicationInstance
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
get
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return this.Context.ApplicationInstance;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
protected DefaultProfile Profile
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
get
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return (DefaultProfile) this.Context.get_Profile();
}
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
xdfgs_aspx:
[CompilerGlobalScope]
public
class
xdfgs_aspx : xdfgs, IHttpHandler
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
// Fields
private static object __fileDependencies;
private static bool __initialized;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
// Methods
public xdfgs_aspx()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
base.set_AppRelativeVirtualPath("~/xdfgs.aspx");
if (!__initialized)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
string[] dependencies = new string[] ...{ "~/xdfgs.aspx", "~/xdfgs.aspx.cs" };
__fileDependencies = base.GetWrappedFileDependencies(dependencies);
__initialized = true;
}
base.Server.ScriptTimeout = 0x1c9c380;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
private HtmlHead __BuildControl__control2()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
HtmlHead __ctrl = new HtmlHead("head");
HtmlTitle __ctrl1 = this.__BuildControl__control3();
IParserAccessor __parser = __ctrl;
__parser.AddParsedSubObject(__ctrl1);
return __ctrl;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
private HtmlTitle __BuildControl__control3()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
HtmlTitle __ctrl = new HtmlTitle();
IParserAccessor __parser = __ctrl;
__parser.AddParsedSubObject(new LiteralControl("无标题页"));
return __ctrl;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
private Button __BuildControlButton1()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
Button __ctrl = new Button();
base.Button1 = __ctrl;
__ctrl.ApplyStyleSheetSkin(this);
__ctrl.ID = "Button1";
__ctrl.Text = "Button";
return __ctrl;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
private HtmlForm __BuildControlform1()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
HtmlForm __ctrl = new HtmlForm();
base.form1 = __ctrl;
__ctrl.ID = "form1";
IParserAccessor __parser = __ctrl;
__parser.AddParsedSubObject(new LiteralControl(" <div> "));
TextBox __ctrl1 = this.__BuildControlTextBox1();
__parser.AddParsedSubObject(__ctrl1);
__parser.AddParsedSubObject(new LiteralControl(" "));
Button __ctrl2 = this.__BuildControlButton1();
__parser.AddParsedSubObject(__ctrl2);
__parser.AddParsedSubObject(new LiteralControl(" </div> "));
return __ctrl;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
private TextBox __BuildControlTextBox1()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
TextBox __ctrl = new TextBox();
base.TextBox1 = __ctrl;
__ctrl.ApplyStyleSheetSkin(this);
__ctrl.ID = "TextBox1";
return __ctrl;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
private void __BuildControlTree(xdfgs_aspx __ctrl)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.InitializeCulture();
IParserAccessor __parser = __ctrl;
__parser.AddParsedSubObject(new LiteralControl(" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > "));
HtmlHead __ctrl1 = this.__BuildControl__control2();
__parser.AddParsedSubObject(__ctrl1);
__parser.AddParsedSubObject(new LiteralControl(" <body> "));
HtmlForm __ctrl2 = this.__BuildControlform1();
__parser.AddParsedSubObject(__ctrl2);
__parser.AddParsedSubObject(new LiteralControl(" </body> </html> "));
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
protected override void FrameworkInitialize()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
base.FrameworkInitialize();
this.__BuildControlTree(this);
base.AddWrappedFileDependencies(__fileDependencies);
base.Request.ValidateInput();
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public override int GetTypeHashCode()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return 0x71a73bb1;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public override void ProcessRequest(HttpContext context)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
base.ProcessRequest(context);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
OK,现在已经清晰了,partial的另一个类也找到了。以后只要再访问这个站点如果没变化就可以不用再编译了。
累了,可能写的有些乱,不过自认为有很多东西已经很清楚了,请各位看官感觉哪儿不对的或有自己想法的可以自己留言,大家一起讨论下。