首页 新闻 会员 周边 捐助

大家好,请问一个winform控件开发方面的问题

0
悬赏园豆:200 [已解决问题] 解决于 2010-12-29 16:18

大家好,请问一个控件开发方面的问题。最近在学习winform控件开发,园子里就一个系列的文章,写的都挺简单的,于是找国外的一控件Dotnetbar来看看,发现它的主文件是一个dll,DotnetBar2.dll,把它拖到vs的工具箱就可以使用了。控件在设计时支持有个单独的DotnetBar.Design.dll,需要安装到GAC里,用reflector查看DotnetBar2.dll时并没有发现对DotnetBar.Design.dll的引用,查看DotnetBar.Design.dll时发现了对DotnetBar2.dll的引用,我只在vs里引用了DotNetBar2.dll,但是在vs里设计视图的时候,DotnetBar.Design.dll确实已经在使用了,问下这个自动引用是如何实现的?

都被占用了的主页 都被占用了 | 初学一级 | 园豆:0
提问于:2010-12-29 11:41
< >
分享
最佳答案
0

你把DotnetBar2.dll拖到工具箱中的时候,VS自动查找并添加引用。

 

我手里没有DotnetBar2.dll,不过它肯定用到了DotnetBar2.Design.dll。

你用Reflector查看,是让它分析看有没有引用对吧。但是如果DotnetBar2.dll中的类,通过字符串方式引用DotnetBar2.Design.dll中的类,你用reflector分析就分析不到了。

 

另外,这样的设计,往往是为了支持.NET Framework 4 client profile而实现的。

收获园豆:200
葡萄城技术团队 | 菜鸟二级 |园豆:411 | 2010-12-29 12:09
谢谢你的回答,vs肯定是引用了,但是它怎么知道是这个文件的呢?DotnetBar2.dll里并没有字符串指向DotnetBar2.Design.dll,我用ildasm反汇编出il代码搜索并不存在这样的引用。我就是想知道他是怎么引用的
都被占用了 | 园豆:0 (初学一级) | 2010-12-29 15:33
比如DotnetBar2.dll中有一个控件类叫DotnetBar。那么它需要一个对应的ControlDesigner,这个ControlDesigner通常会放在DotnetBar2.Deisgn.dll中。通过字符串引用就是在DotnetBar类上加attribute。假设它对应的designer类名叫DotnetBarDeisnger,它的namespace是DotnetBar.Design.DotnetBarDesigner。那么可以这样写: [Designer(DotnetBar.Design.DotnetBarDesigner)] public class DotnetBar : Control { //... } 你就反编译成C#来看就可以了。再找找~
葡萄城技术团队 | 园豆:411 (菜鸟二级) | 2010-12-29 16:00
谢谢你的回答,我再找找看
都被占用了 | 园豆:0 (初学一级) | 2010-12-29 16:13
哈,果然是用Attibute标记的,忘了这茬了,非常感谢你!
都被占用了 | 园豆:0 (初学一级) | 2010-12-29 16:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册