2007年7月11日

call vs callvirt; virtual, override, new

摘要: 看到一些C#书籍,介绍virtual, override, new,我觉得还不够深入。今天有点时间来探讨一下内部的机制,如果有什么不准确的地方,请不吝赐教。我觉得C#编译器编译为IL语言时,遵循下面一个规律 * *对于非虚方法编译为IL时候, *编译为,找到离编译时所能知道的对象类型最近的并且定义过这个函数的class,定义为 <离编译时所能知道的对象类型最近的并且定义过这个函数的class... 阅读全文

posted @ 2007-07-11 17:17 redpeachsix 阅读(2561) 评论(5) 推荐(0) 编辑

根据类名创建实例

摘要: Source Code最近有人问我一个问题,就是如何根据传入的字符串,由父类生成不同的子类。当然,肯定是不希望用switch语句了,也不希望每次创建instance时,都使用reflection。我觉得解决这个问题,应该使用工厂方法来处理。解释一下自己的code,如果有更好的方法,或者有什么可以改进的地方,还望请各位不吝赐教。Shape class 的Create调用ShapeFactory返回一... 阅读全文

posted @ 2007-07-11 14:44 redpeachsix 阅读(2636) 评论(14) 推荐(0) 编辑

ViewState

摘要: ViewState主要使用了Hidden Control,可以存储Page范围内的数据, 它支持String, Integer, Boolean, Array, ArrayList, HashTable, System.Web.UI.Control 如果要存储一个不同的数据类型,需要自定义类型转换器(Type Converter). 已经包含了一个ViewState,它是StateBag(seal... 阅读全文

posted @ 2007-07-11 11:57 redpeachsix 阅读(357) 评论(0) 推荐(0) 编辑

runat="server"

摘要: 指定服务器控件.通过此声明,即使是在System.Web.UI.HtmlContrls namespace下面的html control也可以经asp.net机制封装成服务器控件. 如果无此声明,即使在System.Web.UI.WebControls namespace下面的control也不可以做为服务器控件处理,而是解析成一个LiteralControl, 例如:在一个page上添加一个te... 阅读全文

posted @ 2007-07-11 11:54 redpeachsix 阅读(786) 评论(0) 推荐(0) 编辑

使用Control.Events 而不是event

摘要: 开发Asp.net服务器控件,应该用Control.Events (EventHandlerList), 而不是使用event来发布事件.有助于提高性能, 阅读全文

posted @ 2007-07-11 11:53 redpeachsix 阅读(320) 评论(0) 推荐(0) 编辑

classname , inherits

摘要: classname用来指定page或者user control解析后生成的class的名称(namespace是 ASP). 如果不指定,在asp.net2.0默认一般会以 “ 所在目录_页面名称”(全部小写)的方式指定. 例如TestPage.aspx在Prototype目录中, TestUserControl.ascx在Prototype/Controls目录中. Te... 阅读全文

posted @ 2007-07-11 11:49 redpeachsix 阅读(653) 评论(0) 推荐(0) 编辑

"对事件进行处理而不必附加委托"

摘要: 在asp.net2.0 中经常可以看到msdn上有一句话 " 方法还允许派生类对事件进行处理而不必附加委托。这是在派生类中处理事件的首选技术。" 比如 GridView 可以在aspx页面上指定 OnSorted="******", 解译以后的aspx页面class, 发现其实就是在解译时,把On拿掉,然后注册相应的事件,刚才的aspx上的OnSorted="SortedHandle", 在生成的... 阅读全文

posted @ 2007-07-11 11:47 redpeachsix 阅读(237) 评论(0) 推荐(0) 编辑

导航