论坛登陆 注册 教程 笑话 影视 投稿
首页 | 页界资讯 | 网络应用 | 软件应用 | 组网技术 | 网络原理 | 聊天通讯 | 网管知识 | 帮助
笑话 | 操作系统 | 注 册 表 | 编程开发 | 数 据 库 | 媒体动画 | 网页设计 | 图形图象 | 地图
论坛 | 网络安全 | 安全防范 | 服 务 器 | 硬件学堂 | 路由技术 | 搜索研究 | 站长经验 | 投稿
影院 | 教育频道 | 特色专题 | 精文荟萃 | 注 册 码 | 论坛社区 | 网站地图 | 广告服务 | 旧版
设为首页 加入收藏
当前位置:首页>>文章>>编程开发>>net专区>>正文

动态加载类的原理——元数据的使用

www.xker.com 作者: 来源:51cto.com整理 加入日期:2006-3-27 10:44:51

【问题提问、论坛交流】 
在使用.NET创建的程序或组件时,元数据(metadata)和代码(code)都存储于“自成一体”的单元中,这个单元称为装配件我们可以在程序运行期间访问这些信息
 
在System.Reflection中有这样一个class————Assembly,我们可以通过它来加载一个装配件方法如下:

Assembly assm=Assembly.LoadFrom(fileName);

其中filename是要加载的装配件的文件名称(带路径)

接下来,我们就可以通过使用System.Reflection内提供的Info classes来获取装配件中的信息了首先让我们看一下这些Info classes:

MethodInfo 获取某个“成员函数”的信息,并提供对此“成员函数”元数据的访问

ParameterInfo 获取某个“参数”的信息,并提供对此“参数”元数据的访问

Constructorinfo 获取某个“构造函数”的信息,并提供对此“构造函数”元数据的访问

PropertyInfo 获取某个“属性”的信息,并提供对此“属性”元数据的访问

FieldInfo 获取某个“数据成员”的信息,并提供对此“数据成员”元数据的访问

EventInfo 获取某个“事件”的信息,并提供对此“事件”元数据的访问

上面列出的这些classes(除ParameterInfo外)的访问操作,要通过一个Type对象来完成比如我们要获得一个装配件的“成员函数”就要这样做:

System.Reflection.Assembly ass=System.Reflection.Assembly.LoadFrom(fileName);

Type[] tp=ass.GetTypes();

System.Reflection.MethodInfo[] mi=tp[0].GetMethods();

使用同样的方法我们还可以得到其它的信息,如下:

获得“构造函数”信息:System.Reflection.ConstructorInfo[] ci=tp[0].GetConstructors();

获得“属性”信息:System.Reflection.PropertyInfo[] pi=tp[0].GetProperties();

获得“数据成员”信息:System.Reflection.FieldInfo[] fi=tp[0].GetFields();

获得“事件”信息:System.Reflection.EventInfo[] ei=tp[0].GetEvents();

此外,我们可以通过ParameterInfo类来获取“成员函数”和“构造函数”的参数信息,如下:

获取“成员函数”的参数信息:System.Reflection.ParameterInfo[] pi=mi[0].GetParameters();

获取“构造函数”的参数信息:System.Reflection.ParameterInfo[] pi=ci[0].GetParameters();

ParameterInfo类有两个重要的属性:Name和ParameterType通过它们我们可以得到“参数”的名称和数据类型

由于.NET将class的信息以“元数据”的形式封装在程序或是组件中,又提供了一系列可以获取“元数据”的方法,所以我们可以程序运行期间来动态的访问这些信息
编辑:xker.com

上一篇:ASP.NET应用程序规划与设计
下一篇:没有了
关闭窗口】【技术交流】【收藏此页
相关文章
·ASP.NET应用程序规划与设计·ASP.NET创建Web Services之概述·ASP.NET调用oracle实现快速分页
·ASP.NET中实现大结果集分页研讨·ASP.NET1.0升级ASP.NET2.0的问题总结·Asp.Net细节性问题回答精萃
·十天学会ASP.net之第二天·10天学会ASP.net之第一天·ASP.NET页面间的传值的几种方法
·ASP.NET:掌握Web窗体的生命周期与状态·ASP.NET入门随想之多态、接口与委托·AJAX+ASP.NET解决网页打开等待问题
·关于ASP,ASP.NET,VB.NET里的MD5加密函·ASP.NET2.0应用中定制安全凭证之理论·ASP.NET入门随想六之大航海家
推荐文章 最新文章 热门文章
·小工具大用处 让网吧线路可以自由切换
·C#利用Web Service实现短信发送
·用VB6.0实现网络实时监控系统
·MP4播放器玩转字幕—— 从Sub到Srt
·JAVA 与.NET 在前途上面的比较
·AJAX+JSF组件实现高性能的文件上载
·自己制作带农历的年历
·全面分析Java的垃圾回收机制
·3DMAX打造宇宙中遥望美丽的地球
·实现.NET应用程序的自动更新
·黑客也在乎安全:谈黑客避开检测的手
·内网安全技术十大策略 打造坚固的内网
·优化MySQL数据库性能的八大“妙手”
·给系统减肥 卸载Windows中的集成组件
·MySQL数据库中mysqldump命令使用详解
·动态加载类的原理——元数据的使用
·ASP.NET应用程序规划与设计
·ASP.NET创建Web Services之概述
·Office 2007推迟发布 初定于明年一月
·网管工具 用OH协助服务器进行安全监控
·Windows系统中几则共享信息快捷管理命
·小工具大用处 让网吧线路可以自由切换
·修改asp代码防止被杀毒软件误删
·巧用WinRAR让加密文件变颜色
·QQ火腿肠和QQ方便面即将登场?
·惊人言论:商业软件十年内全免费
·QQ空间养花指南
·C#利用Web Service实现短信发送
·Phtotoshop批处理轻松制作网页相册
·同时安装sql2000和sql2005的经验
·个人简历表格
·免费代理IP(每日更新)
·QQ收费头像免费使用的方法 
·QQ密码丢失后能做的事情:快速找回密码
·Norton AntiVirus 2006 注册码(激活
·系统优化 专题
·豪杰超级解霸V9.1正版注册码
·WinRAR 3.51 注册码
·找回QQ密码的注意事项 
·史上最强QQ个人档案资料欣赏
·Ajax技术开发指南
·最经典的黑客入门教材
·求职简历封皮
·ACDSee v8.0注册码
·QQ空间皮肤代码
评论

设为首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2003-2006 xker.com All rights reserved.小新技术网 合作广告QQ:12231446
本页浏览次数: