让阳光指引生命的每一刻,乘着风,跟随我融化空气

美丽的地球

2007年5月23日 #

asp.NET自定义服务器控件内部细节系列教程七(状态管理)

摘要: Contorl类的默认实现将状态管理委托给了ViewState属性,ViewState属性是一个复杂属性,该属性是一个StateBag类型,是一个字典,StateBag类实现了IStateManager接口来实现状态管理。StateBag保存了键/值对,其中键是字符串而值是对象。当某个对象添加到StateBag实例中时,StageBag自动为该对象存储一个附加位,它用来标志存储的对象是否修改过。

Control类用于IStateManager接口中相同的成员来实现状态管理,尽管Control并不实现IStateManager接口,只是委托给了实现了IStateManager接口类型的StateBag类,也就是委托给了ViewState属性。在自己的复杂类型状态管理中,可以模仿Control的这种行为,以实现自定义复杂属性的状态管理。
阅读全文

posted @ 2007-05-23 14:57 天真的好蓝啊 阅读(2033) 评论(1) 编辑

asp.NET自定义服务器控件内部细节系列教程六(复杂属性)

摘要: 复杂属性的类型不能用简单的字符串表示。这些类型包括非原子值的类型,除字符串外的引用类型以及集合类型。在使用自己的控件时如果遇到复杂属性,那么为了支持声明持久性还需要做额外的工作,并进行状态管理。
为了使复杂属性具有声明持久性,必须要由以下两个相关的内容一起作用实现:与串行化相关的元数据Attribute和执行给定类型与String类型及其它类型的互相转换的类型转换器,稍后我会讲到。

1.子属性的形式
1.1 连字符子属性的实现
1.2 内部属性的实现
1.3 内部默认属性的实现

2.属性和类型转换器
类型转换器是从System.ComponentModel.TypeConverter派生的一个类。页面框架使用类型转换器来实现视图状态的串行化,而且可视化设计器也适用类型转换器在浏览器中显示属性,并实现设计期的串行化。阅读全文

posted @ 2007-05-23 14:54 天真的好蓝啊 阅读(2188) 评论(1) 编辑

My Links

Blog Stats

News