快速业务通道

Asp.net 3.5控件和组件开发技术系列—服务器控件属性(五)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
的访问。代码如下:

object[] attrs = (object[])property.GetCustomAttributes(true);
foreach (Attribute attr in attrs)
{
   if (attr is NumValidateAttribute)
   {
     return attr as NumValidateAttribute;
   }
}
return null;

通过PropertyInfo 对象实例的GetCustomAttributes 方法获取Num 属性的所有自定义属性类实 例,放到attrs 数组中,再循环遍历数组中每个实例的类型,如果找到有NumValidateAttribute 类型的对象实例,则返回此实例;否则,返回null 。

GetCustomAttributes 方法主要是展示怎样获取属性元素的设计属性实例,如果自定义属性不 是应用到属性,而是类或接口或方法等,则获取属性实例方式原理类似,都是通过反射机制实现。 这里不作多讲,具体使用时可以查看官方文档。

编译主控件,并放置一个CustomPropertyControl 控件到页面中,则可以在属性窗口中通过修 改控件Num 属性的值来看一下效果,如图4-37 所示。

自定义属性就讲到这里,在主控件类中可以通过this.GetType() 方法获取当前控件的类型,再 根据类型取得属性,进而取得属性的设计属性Attribute ,那么在控件构造器类、控件编辑器类或 控件类型转换器类等这样的一些类中是怎样获取到当前主控件类型呢?其实读者可能会想到了,一 般在这些特殊类中都会有相应的上下文对象,比如在4.6 节讲解的自定义类型转换器中,像 ConvertTo ,CanConvertFrom 等方法都会有个ITypeDescriptorContext 类型的上下文参数,基本 上我们可能需要的所有信息都能够通过此对象得到,如图4-38 所示。

图4-37  属性窗口效果

图4-38  智能感知列表

如上图所示的智能感知列表,可以看到它下面有容器对象、实例、属性描述集合,还有属性描 述类等。

4.8  本章总结

本章内容比较多,对控件的属性作了详细的介绍。本章按照不同的分类方法将控件属性分为系 统属性和自定义属性;简单属性和复杂属性;并且分别阐述了这些属性类别的定义和属性的设计时 特征。其中重点讲解了复杂属性,包括各种复杂属性标记的实现方式,及通过高级功能 AddParsedSubObject 和ControlBuilder 实现自定义的复杂属性。一个使用方便的控件不仅要具备 丰富的属性以实现灵活的控制,还应具备友好的属性编辑器。因此本章深入讲解属性编辑器,包括 系统常用编辑器和自定义编辑器。在配置属性时常常需要用到类型转换,本章特意用一节讲解系统 常用类型转换器和自定义的两个类型转换器:三维坐标类型转换器和集合列表类型转换器。本章堪 称本书的精华章节之一,请读者务必仔细阅读,细细体会。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号