初识VS2008的尴尬体会(当命名空间名称与系统的类名相同时)
来源:互联网 发布:我的野蛮女友 知乎 编辑:程序博客网 时间:2024/05/16 19:42
事情的起因
最近想学习学习ajax, 看了赵劼的VS2008的UpdatePanel的WebCast视频, 视频中用到一个例子将ScriptManager存放入一个母版页中,这样其它的UpdatePanel控件页面直接引用此母版页面就可以了,我也照此处理
1)新建了一个Web工程(WebApplication)名叫 UpdatePanel (就是这个名字的工程出了问题)
2)建立了一个母版页Site1.master,在母版页中放置了一个ScriptManager
3)再建立一个WebForm1.aspx,引用刚才建立的Site1.master作为母版页,在此页中建立一个UpdatePanel,然后写了一些代码
4)编译运行。系统出现了奇怪的错误
英文提示是这样的 :The type name 'Site1' does not exist in the type 'System.Web.UI.UpdatePanel
(System.Web.UI.UpdatePanel 类中不存在名字为 Site1的对象)
问题原因及解决办法
在网上查了一阵子没找到原因,仔细看了系统的提示,意思是说 System.Web.UI.UpdatePanel类里不包含Site1类,打开后台的cs文件看看,恍然大悟,系统在为我建立工程的时候自动加上了UpdatePanel的命名空间,这样我的命名空间就是UpdatePanel,正好和UpdatePanel相同,而我的母版页的后台类就成了UpdatePanel空间下的Site1类,这下当系统编译运行时,系统在System.Web.UI.UpdatePanel下找,当然找不到Site1类了,因此提示了上述错误。
找到原因后,修改UpdatePanel命名空间,因为是测试程序只是将所有的UpdatePanel命名空间去掉(别忘记将页面文件的引用类的命名空间也去掉呀),再编译运行,成功!,真不容易,由于不熟悉VS2008的开发环境这么一个小小的错误,竟然用了我将近半天的时间,有些不太划算呀。在这里将这个经验告诉大伙,大伙可别再犯我这样的错误呀。
总结:
不管是建立工程还是建立类文件及其它的命名,千万不要使用系统定义的类或关键字作为你的类名,文件名,否则很容易产生以上的错误,造成不必要的麻烦,养成一个良好的命名习惯不但能使代码清晰,同时也会减少程序出错的机率,提高程序的可扩展性。
建议:如果只是使用Web程序做一些测试程序会小型的应用,最好建立WebSite(网站)类型的项目,开发大型应用的时候建立WebApplication(Web项目)会比较好。
WebSite:在建立项目之后系统不会自动为cs文件中建立命名空间,WebSite没有工程文件,系统会将项目目录中的所有文件作为项目中的文件使用
WebApplication:在建立项目之后系统会自动为每个cs文件建立命名空间(空间的名称为用户建立项目时的项目名),有一个.csproj的项目文件用来保存项目中文件及相关的引用等项目基本信息
- 初识VS2008的尴尬体会(当命名空间名称与系统的类名相同时)
- C++学习小疑问:类的名称能否和命名空间的名称相同?
- Atitit. . 软件命名空间与类名命名单词的统计程序设计v2
- Javascript的命名空间namespace个人体会
- IntelliSense: 后面有“::”的名称一定是类名或命名空间名
- 初识对象——类的定义和调用,属性与方法以及名称空间
- BUG:命名空间名称和类名冲突
- BUG:命名空间名称和类名冲突
- C# 不同命名空间的相同类,反射赋值
- 不同命名空间的相同变量
- Python 命名空间 及变量搜索规则 属性名称 属性名称 无点号运算的变量名
- 实参数组名与形参数组名的尴尬
- WCF的三个名称/命名空间
- 更改C#项目的命名空间名称
- PHP命名空间的名称解析规则
- 当xml带有命名空间时。dom4j的处理办法
- 通过MyEclipse部署到Tomcat的应用名称与工程名不相同的解决方法
- .Net框架下的命名准则--命名空间的名称
- 于丹《庄子》心得讲稿-《认识你自己》
- 抽象工厂模式,BLL层如何使用工厂的代码?
- C#读取和写入Excel2003的代码
- C#操作Excel时,Excel常用的方法和属性
- 强行杀死最近打开的Excel进程
- 初识VS2008的尴尬体会(当命名空间名称与系统的类名相同时)
- 于丹《庄子》心得讲稿-《坚持与顺应》
- Leave_Over Detect
- 于丹《庄子》心得讲稿-《境界有大小》
- 搭建SSH时的思考和遇到的几个问题 (转帖)
- 博客开通咯
- oracle 中两个数据表间的拷贝
- [编译原理]词法分析器JLEX使用指南 (Jdk1.5.0 + JLex 1.2.6)
- 一个创业的故事——Philippe Kahn 和Anders Hejlsberg