Asp.net 2.0名称空间(代码目录)初探

    习惯了Asp.net1.1的每个类文件的namespace,如今Asp.net2.0来势汹汹,赶紧装了一个VS 2005 Beta2,建一个Web项目尝尝鲜,突然发现CS文件中的namespace全都不见了,不管是aspx页面的后台代码还是自己新添加的类文件,于是,一个个"?"在脑海中浮先出来---那他是如何管理各个类,怎么解决类名冲突的问题呢.....于是初探了一把:
    Asp.net2.0的代码组织方式和Asp.net1.0不相同了,在2.0中,存在一种特殊目录(代码目录,数据目录,全局资源目录,本地资源目录.......)在beta2中采用名称类似:App_Code,App_Data,App_GlobalResources等等...在VS2005 Beta2中,在添加一个类文件的时候,系统会提示"你试图向Asp.net应用程序中添加一个类文件,如果要使该类在你的站点是可用的话,你应该把他放在'App_Code'目录中".于是添加一个类文件到App_Code目录中,如下图结构:
Asp.net 2.0名称空间(代码目录)初探
此时,添加的类文件Class1.cs并没有名称空间信息
Asp.net 2.0名称空间(代码目录)初探
没有名称空间,那么在其他目录层次中应该怎么访问这个类呢?于是,我在外部的CheckList.aspx.cs中执行定义Class1的操作,发现是可以实例化该类的,那是不是说现在引用App_Code中的类都不用管名称空间的事呢,VS会自动在该目录中去搜索该类呢?那如果我在App_Code的子目录中存在同名的Class1.cs的文件又会怎么样呢?于是,构造如下结构:
Asp.net 2.0名称空间(代码目录)初探
现在,这两个Class1.cs文件就是完全一样的两个文件了。编译。。。出错,提示“已在《全局名称名称空间》中申明了'Class1'”。看来,凡是App_Code下面的类文件统统都属于“gobal namespace”,Asp.net2.0会自动管理其中的类的。于是,通过手动给冲突文件的其中一个加上一个名称空间,OK,冲突没了,引用照常就可以了。但是问题又出来了,我在非“App_Code”目录中添加的类(如上图中,我在Web程序的根添加了一个文件Class2.cs,同样刚添加的时候无名称空间,无法引用,手动添加上名称空间后,仍然无法引用。。。郁闷,难道"App_Code"外的类就无法引用了?晕。。。再研究,查资料。。。。

你可能感兴趣的:(asp.net)