.Net反射-基础1-Assembly、Type
2024-10-17 08:28:26
Assembly:封装程序集信息,可以动态加载程序集
获取Assembly的几种方式:
1、var ass1 = Assembly.Load("ClassLibrary1");//项目中已引用此程序集,可以使用这种方法 2、var ass2 = Assembly.LoadFrom("c://xxxx.dll");//根据程序集全路径获取Assembly 3、var ass3 = personType.Assembly;//指定Type所在的Assembly 4、var ass4 = Assembly.GetAssembly(personType);//同上 5、var ass5 = Assembly.GetExecutingAssembly();//包含程序入口的程序集
Type:封装反射得到的类信息,也可以通过它反射创建一个对象
获取Type对象的几种方式:
1、assembly.GetType("反射Demo.Person"); 2、Type.GetType("反射Demo.Person"); 3、typeof(Person); 4、new Person().GetType();5、assembly.GetType("反射Demo.PersonT`2") //泛型6、typeof(MyList<,>); //泛型
Type对象的常用属性:
animalType.IsArray//是否是数组类型 animalType.IsImport//是否是COM类型库导入 animalType.IsVisible//是否可由程序集之外的代码访问 animalType.IsNestedPublic//如果类是嵌套的并且声明为公共的,则为 true;否则为 false。 animalType.IsNestedAssembly//是否是嵌套的并且只能在它自己的程序集内可见。 animalType.IsNestedFamily//是否是嵌套的并且只能在它自己的家族内可见。 animalType.IsNested//嵌套在另一个类型内 animalType.Namespace//命名空间 animalType.BaseType//直接继承Type animalType.AssemblyQualifiedName//程序集限定名 animalType.IsSealed//是否声明为密封的 animalType.FullName//获取该类型的完全限定名称,包括其命名空间,但不包括程序集。 animalType.Assembly//获取在其中声明该类型的 System.Reflection.Assembly animalType.Module//获取在其中定义当前 System.Type 的模块 (DLL)。 animalType.GUID//获取与 System.Type 关联的 GUID。
Type对象的常用方法:
var personType = typeof(Person); personType.GetProperties(); personType.GetProperty("Name"); personType.GetFields(); personType.GetField("_name"); personType.GetMethods(); personType.GetMethod("SayHello"); personType.GetMembers(); personType.GetMember("Name"); personType.MakeGenericType(new Type[] { typeof(string) }).GetMethod("SayHello").Invoke(obj);//为泛型对象指定泛型类型 typeof(EJobType).GetEnumUnderlyingType();//获取枚举基础类型,此方法只能用于枚举类型
MethodInfo成员:
mi.MakeGenericMethod(new Type[]{typeof(string)}).Invoke(obj,null);//为泛型方法指定泛型类型
最新文章
- android studio ndk配置和ndk开发
- 【SPI】Polling Interrupt DMA
- TCSQL实时列表缓存数据库帮助文档
- 解决treeview未选中时,默认选中首个根节点的问题!
- 一种json生成html的思路
- 问答精华-IntelliJ IDEA快捷键大全
- Asp.net下载文件
- JQuery Mobile 实战一
- sitemap制作
- Arduino单片机使用和开发问题记录(转)
- 自学Python2.7-collections系列
- .NET中的各种池
- c/c++ 多线程 thread_local 类型
- ext.js的mvc开发模式详解
- c# 获取本机IP
- .whl文件打开方式 Python
- 【1】存在大于1s的FullGC
- COGS.1317.数列操作c(分块 区间加 区间求和)
- 谷歌浏览器慎用有道词典插件(<;audio>;<;/audio>;) (转载)
- 目标检测之dpm---hog的最优升级版