认识IExtenderProvider接口
在传统编程模式中,如果我们想扩展一个类,一般的做法是继承这个类,然后加入新的方法、属性,或重载某写函数。在.net世界里,我们仍然可以这样做,但是,.net framework也提供了另外一种选择,就是使用IExtenderProvider接口。
IExtenderProvider接口借助VisualStudio设计器的功能,使我们可以动态的为控件增加属性,并可以在设计时通过属性窗口修改这些属性,而不需要继承控件类。这样做的最大好处是可以借助Visual Studio的能力,并保持控件原有的设计时支持。
例如,要实现带图标的自画菜单,我们虽然可以通过继承MenuItem类来实现,但继承后的类无法在VS的菜单设计器中使用,结果只能通过通过手工编写代码构建整个菜单。而如果使用IExtenderProvider接口,则可以使MenuItem类在设计时动态增加一个设置图标的属性,而仍然可以使用VS的菜单设计器。
MSDN对IExtenderProvider的介绍可以说是跟没有一样,顺带说一下,.net framework的在线帮助和VC6的在线帮助比起来,真的是差远了,可能时间太短,需要慢慢改进吧
这篇文章详细介绍了IExtenderProvider的原理和使用方法,而使用这种扩展方式实现的带图标的菜单可以在这里看到,包含完整的源代码,真是非常游泳的参考资料。
当然,使用IExtenderProvider接口做扩展也有缺点,那就是太依赖于开发环境了,如果我们不是在VS所见即所得的设计环境中使用,就不能从中得到好处,所以在很多情况下,其实继承的方式通用性更强些,而且也容易理解,个人意见
posted on 2004-04-15 14:55 vibration 阅读(1291) 评论(3) 编辑 收藏 举报