C#程序集相关的概念
程序集包含:类型元数据(描述在代码中定义的每一类型和成员,二进制形式)。程集元数据(程序集清单、版本号、名称等)、IL代码(这些都被装在exe或dll中)、资源文件。每个程序集都有自己的名称、版本等信息,这些信息可以通过AssemblyInfo.cs文件来自己定义。
获取一个类的类型 person p=new person(); Type Type=p.getType();
得到一个类的类型 Type type=typeof(Person);
获取一个类型的父类 Type type=s.GetType().BaseType;
获取Person类型的所有方法(不包括私有方法)
Person p=new Person(); Type personType=p.GetType();
MethodInfo[] methods=personType.GetMethods();
foreach(var item in methods)
{
Console.Writeline(item.Name);
}
获取一个类型的属性:
PropertyInfo[] properties=persontype.GetProperties();
遍历数组的时候返回的类型为PropertyInfo
获取一个类型的所有字段:FieldInfo[] fields=typeof(Person).GetFiels();返回的类型为FieldInfo
获取一个类中的所有成员:MemberInfo[] members=typePerson.GetMembers();遍历数组时返回的类型为MemberInfo;
通过反射调用方法:(定义的方法没有参数)
1.获取一个类的Type
2.获取我们要找的方法
3.创建一个该类的对象
4.调用方法
Type person=typeof(Person);
MethodInfo SayHi=peron.GetMethod("SayHi");
object obj=Activator.CreateInstance(person);
SayHi.Invoke(obj,null);
通过反射调用方法(定义的方法有参数)
Type person=typeof(Person);
MethodInfo info=person.GetMethod("Say",new Type[]{typeof(string),typeof(string)});
object obj=Activivator.CreateInstance(person);
info.Invoke(obj,new obj[]{"大家好","大坏蛋"});
调用一个带返回值的方法:
Type personType=typeof(Perosn);
MethodInfo info=personType.GetMethod("Add");//Add方法中返回的是一个int类型的方法
object obj=Activator.CreateInstance(personType);
object objreturn=info.Invoke(obj,new object[]{10,20});
动态加载程序集:
Assembly asm=Assembly.LoadFile(@"E:\aa\程序集\程序集\ClassLibrary1\bin\Debug\ClassLibrary1.dll")
获取程序集中所有类型的Type
Type[] types=asm.GetTypes();
获取所有类型的public 类型的Type
Assembly adm=Assembly.LoadFile(文件的绝对路径);
Type[] publictype=adm.GetExportTypes();
获取指定的类型
Type typePerson=asm.GetType("ClassLibrary1.Person");
判断一个类型是否可以被另一个类型实例化
typePerson.IsAssignableForm(typeChinese);
考虑是一个类型是否为另一个类型的子类,返回的结果是一个bool类型
typePerson.IsSubclassOf(typeChinese)
欢迎关注我的公众号(同步更新文章):DoNet技术分享平台
阅读原文
C#程序集相关的概念相关推荐
- WiFi相关基础概念
转自:https://blog.csdn.net/lbaihao/article/details/73250798 一.WiFi相关基础概念 1.什么是wifi 我们看一下百度百科是如何定义的: Wi ...
- 【Linux开发】linux设备驱动归纳总结(一):内核的相关基础概念
linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- linux驱动内核哪个文件夹,linux设备驱动归纳总结(一):内核的相关基础概念...
linux设备驱动归纳总结(一):内核的相关基础概念 1. 内核与 linux 设备驱动的作用与关系 内核:用于管理软硬件资源,并提供运行环境.如分配 4G 虚拟空间等. linux 设备驱动:是连接 ...
- 【Linux开发】linux设备驱动归纳总结(二):模块的相关基础概念
linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10.04 开发平台:S3C2440开发板 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- [转载]与索引相关的概念---聚簇因子
原文地址:与索引相关的概念---聚簇因子作者:Ryan 1.聚簇因子(Clustering factor) 索引行的存储顺序与表中行的存储顺序之间的相似程度. 当相似度高时,这些数据行就会密集地存储在 ...
- 理解嵌入式开发中的一些硬件相关的概念
为什么80%的码农都做不了架构师?>>> 做嵌入式系统开发,经常要接触硬件.做嵌入式开发对数字电路和模拟电路要有一定的了解.这样才能深入的研究下去.下面我们简单的介绍嵌入式开发 ...
- 【多目标优化】1. 多目标优化的相关基本概念
[多目标优化]1. 多目标优化的相关基本概念 [多目标优化]2. 非支配排序遗传算法 -(NSGA.NSGA-II) [多目标优化]3. 基于分解的多目标进化算法 -(MOEAD) 在学习多目标优化的 ...
- SEO究竟是什么?SEO的相关基础概念介绍
可能对于刚接触优化的新手来说,要明白SEO是什么,只有了解之后才能有进一步的学习以及提升.在互联网搜索引擎中,已经有了大量的相关资料以及定义.不同的人会用不同的语言来解释SEO是什么,但是最终的结果是 ...
- UART 相关的概念
本篇博客会讲解uart相关的概念,会在下一篇博客中介绍如何基于Verilog的uart实现. 一,UART的功能 发送: 1,将数据从并行转为串行 2,起始位和停止位的设计 3,增加奇偶校验位 接收 ...
最新文章
- 计算机存储技术及其发展了论文,计算机网络存储技术探究-计算机网络论文-计算机论文(13页)-原创力文档...
- uwb定位算法c++代码_一指连小米UWB技术发布!手机一指,就能操控
- 北斗导航 | 学习PPP和PPP-RTK
- mysql 踩过的坑_MySQL数据库踩过的一些坑
- form表单回车提交问题
- [Vue warn]: Failed to mount component: template or render function not defined. (found in root insta
- rocket-console控制台安装
- Java定时器Timer学习之一
- 编程绘制图形java_[JAVA100例]026、基本图形绘制 - 编程入门网
- 源码包安装mysql5.7.25_centos源码安装mysql5.7.25-boost
- Hive中文件存储格式及大小比较测试
- PCWorld评出的2010年世界杀毒软件排名
- 阿里云手机号短信设置
- CUMCM 2021-B:乙醇偶合制备C4烯烃(1)
- [Android] 选项卡组件TabHost
- 我爱民科,苍蝇越多越干净?!
- 如何在word中输入带对号的方框
- 《The Selfish Giant》
- MySQL 5.5.20 中文乱码:我的抗争解决史
- 曲线上点的曲率半径计算
热门文章
- OPENCV回调函数
- C++ STL中set底层实现方式
- qtp启动java程序_转: QTP六脉神剑之调用Java程序
- shiro反序列化工具_Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)源码解析
- (56)zabbix Screens视图配置
- (五)Redis在项目中应用
- git常用配置(指令)
- 像Excel一样使用python进行数据分析(1)
- [技术分享]20171130_Kendo UI _ datePicker日期控件如何只选择年,不选择月,日?
- 06jQuery-04-DOM操作