.net控件编程 资料篇

Asp.net的控件和windows 控件是有一定区别的。下面多数资料是以windows控件来讨论的,不过其实它们的原理都是相同的。

我们还是从正牌的 MSDN 开始
.NET Framework 使用组件编程
1. 讲述了组件和控件术语的定义和之间的区别。
2. 讲述了扩展设计时支持,就是让你的控件或组件能在VS里面进行属性等设计(定义)提供给使用者支持(比如:UI显示方面)- 这一节是进行asp.net服务器控件编程或者是.net windows窗体编程必读,当然,尽管你可以编写一些控件而不提供设计时支持,但去了解和学习一下,可以明白一些微软在Visual Studio(平台上面是如何来支持设计)
design_architecture 
这张图片也出现在《道不远人 asp.net控件编程》里面,大家了解一下
3. 里面包括了关于.net windows窗体控件和asp.net服务器控件的内容。


设计时结构
这部分谈到了属性(Attribute),设计器,类型转换器,UI编辑器,设计时服务等重要概念。

其中会涉及到TypeDescriptor, 它提供有关组件属性 (Attribute) 的信息,如组件的属性 (Attribute)、属性 (Property) 和事件。无法继承此类。

请注意,组件的属性 (Attribute)、属性 (Property)的两个概念. 它们是不同的,虽然都被翻译成为属性. 我一直把属性(attribute)称为标签属性,因为它总是去描述某个组件,类型,事件的什么什么(类似物价标签,描述什么产地,品质等等)

请看代码里面,类似

[TypeConverter(typeof(ImageIndexConverter2)),
       Editor(typeof(ImageIndexEditor2),typeof(UITypeEditor))]

就是标签属性

   1: [TypeConverter(typeof(ImageIndexConverter2)),
   2:        Editor(typeof(ImageIndexEditor2),typeof(UITypeEditor))]
   3:        public int ImageIndex
   4:        {
   5:            get { return _imageindex; }
   6:            set { _imageindex = value; }
   7:        }

而ImageIndex也是属性(property), 所以看到这里大家可以区分出来.

通过TypeDescriptor我们可以获得一个类型或组件的, PropertyDescriptor,EventDescriptor (但没有AttributeDescriptor)

*注意
visual studio 本身就一个应用程序,也是一个平台,我们在设计组件的只要遵从它定义的机制,就可以提供设计时的支持,在这种机制里面,它使用了反射的特性。特别是UI类型编辑器和设计器中使用比较多。
入门和例子

.net 组件编程 -  MapServer

原文地址:https://www.cnblogs.com/king_astar/p/1196542.html