首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络安全
.net中实现运行时从字符串动态创建对象-.NET教程,Asp.Net开发
作者:网友供稿 点击:465
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
params()数组是构造方法的参数内容表,同样因没有参数,我们使用redim -1的语法。
  
  invoke方法执行了构造方法,创建出对象实例。
  
  现在我们回到第一种实现方法,将代码改一下,将
  
  dim t as type = gettype(myclasstest)
  
  改为
  
  dim t as type = type.gettype("vbapplication.myclasstest")
  
  运行的结果没有改变,这就是说,我们实现了从字符串创建对象!不过这里gettype方法的使用有限制,具体我们后面再说。现在就可以实现我们的愿望:动态创建控件。通过上面的知识,我们很容易写出一个动态创建窗口控件的子程序:
  
  private function createnewcontrols(byval targetcontrols as control.controlcollection, byval ctlname as string, byval ctltype as type, byval ctlsize as drawing.size, byval ctllocation as drawing.point) as control
  
   dim tocreate as control
  
   tocreate = ctype(system.activator.createinstance(ctltype), control)
  
   tocreate.name = ctlname
  
   tocreate.size = ctlsize
  
   tocreate.location = ctllocation
  
   targetcontrols.add(tocreate)
  
   return tocreate
  
  end function
  
  那一句较长的语句中包含了上一个例子中的所有内容。如果用c#书写,则可以写成
  
  tocreate = (control)system.activator.createinstance(ctltype);
  
  我们将按钮的事件过程改成:
  
  dim c as control = me.createnewcontrols1(me.controls, "control1", gettype(checkbox), new size(168, 40), new point(64, 176))
  
  c.text = "new creation"
  
  现在,单击一下按钮,就可以看到一个新的checkbox出现在窗口上,标题为new creation,而且,如果编写了事件过程,还可以为新建的控件添加事件响应。
  
  看来一切都达到目的了?注意这一句gettype(checkbox)还是使用了类名的字面表示,无法达到用字符串创建对象的功能。如果我们把这一句改成type.gettype("system.windows.forms.checkbox")行不行?嗯,试验一下,呵呵,出错了。为什么会这样?type.gettype()方法从字符串获得类型仅限于corlib中的类型或者工程内部的类型,如果是来自于外部的程序集就需要加以程序集的名称。windows.forms程序集是公有的程序集,是位于程序集缓存中的,可以在.net framwork内部实现side by side执行。所以这个程序集有不同的版本,为了确定使用的版本,我们不仅要提供程序集的名称,还要提供程序集的版本和强名称。按照这个思路,在我使用的.net framework 1.1上,将这一句写成type.gettype("system.windows.forms.checkbox, system.windows.forms, version=1.0.5000.0, culture=neutral, publickeytoken=b77a5c561934e089")。现在运行就没有问题了。问题是我们如何取得所用windows.forms程序集的版本和强名称?可以用gettype(checkbox).assemblyqualifiedname这样的语法,一旦得到了这些信息,我们就可以将这些信息用于其它任何控件,因为他们都来自于同一个版本windows.forms程序集。现在可以来玩一个好玩的,放一个文本框到窗口上,比如叫做textbox1,将按钮的事件过程改为:
  
  try
  
   dim c as control = me.createnewcontrols1(me.controls, "control1", type.gettype("system.windows.forms." & textbox1.text & ", system.windows.forms, version=1.0.5000.0, culture=neutral, publickeytoken=b77a5c561934e089"), new size(168, 40), new point(64, 176))
  
   c.text = "new creation"
  
  catch ex as exception
  
   msgbox(ex.message)
  
  end try
  
  现在只要在textbox1种输入“button”,按下按钮,一个新按钮产生了!如果输入的是checkbox,那么将产生一个复选框。现在无论用户怎样刁难,控件都能正确“按需创建”了。反射机制在.net中还有很多用途,据说delphi.net中的类引用及虚拟构造函数等功能用于.net framwork时就是借助于反射及system.type类型实现的,善用这一利器会给你的程序增色不少。



文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·用javascript实现的日期时间输入控件-JSP教程,Java技巧及代码
·java开发工具(JCreator,jbuilder,Eclipse)常见问题及解决-JSP教程,Java技巧及代码
·关于C#中,继承类重写与隐藏基类方法的区别!-.NET教程,C#语言
·.net中实现运行时从字符串动态创建对象-.NET教程,Asp.Net开发
·Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)-.NET教程,Asp.Net开发
·用WebWork、JSP、Velocity建立注册页面-JSP教程,Jsp/Servlet
·在eclipse上用myeclipse开发部署struts-JSP教程,Java技巧及代码
·Java Reflection (JAVA反射)-JSP教程,Java技巧及代码
·ASP.NET中使用web.config配置web应用程序中的数据库连接-.NET教程,Asp.Net开发
·Cookie的作用-PHP教程,PHP技巧
最新文章
·blog可以通过google adsense赚大钱吗?_网赚技巧
·张朝阳:竞争对手再联合也扳不动搜狐_站长访谈
·追求完美的英语教育网站-访e学网站长_站长访谈
·走进黑客网站站长的内心世界_站长访谈
·建站经验之域名选择篇诠释_站长心得
·google占据美国搜索引擎市场50% 邮箱占不到3%_google推广
·高分辨率下界面布局的解决方案3_站长心得
·google及雅虎搜索引擎优化的八大提示_seo网站优化
·如何突出_站长心得
·windows vista安装机密 避免联机激活与自选分区_windows vista
相关主题
  • .net中多线程的同步资源访问_c#应用
  • .net中socket编程的简单示例_asp.net技巧
  • .net中常见问题及解决方法归类_asp.net技巧
  • .net中错误日志的写入_asp.net技巧
  • .net中大数处理的一些算法思想_asp.net技巧
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭