.Net反射-基础1-Assembly、Type
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);//为泛型方法指定泛型类型
.Net反射-基础1-Assembly、Type的更多相关文章
- C#学习笔记----反射基础
反射基础 反射用于在程序运行过程中,获取类里面的信息或发现程序集并运行的一个过程.通过反射可以获得.dll和.exe后缀的程序集里面的信息.使用反射可以看到一个程序集内部的类,接口,字段,属性,方法, ...
- C#反射与特性(一):反射基础
目录 C#反射与特性(一):反射基础 1. 说明 1.1 关于反射.特性 2. 程序集操作 2.1 获取 程序集对象(Assembly) 2.2 Assembly 使用 2.3 获取程序集的方式 C# ...
- java反射 之 反射基础
一.反射 反射:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为 ...
- C#基础系列 - 反射基础
反射用于在程序运行过程中,获取类里面的信息或发现程序集并运行的一个过程.通过反射可以获得.dll和.exe后缀的程序集里面的信息.使用反射可以看到一个程序集内部的类,接口,字段,属性,方法,特性等信息 ...
- java反射基础知识(四)反射应用实践
反射基础 p.s: 本文需要读者对反射机制的API有一定程度的了解,如果之前没有接触过的话,建议先看一下官方文档的Quick Start. 在应用反射机制之前,首先我们先来看一下如何获取一个对象对应的 ...
- java反射基础知识(一)
一.反射 反射:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为 ...
- 反射基础 System.Reflection
一.获取程序集Assembly 1.获取当前运行的程序集 System.Reflection.Assembly[] asm = AppDomain.CurrentDomain.GetAssemblie ...
- 【转】Java反射 之 反射基础
一.反射 反射:Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为 ...
- Java Reflection 反射基础
反射基础: package reflection; /** * Created by : Infaraway * DATE : 2017/3/2 * Time : 23:06 * Funtion : ...
随机推荐
- .NET Core创建Worker Services
.NET CORE 3.0新增了Worker Services的新项目模板,可以编写长时间运行的后台服务,并且能轻松的部署成windows服务或linux守护程序.如果安装的vs2019是中文版本,W ...
- 【操作系统之十三】Netfilter与iptables
一.Netfilter Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤.数据包处理.地址伪装. ...
- pytorch_01_基础_一维线性回归
pytorch基础 pytorch官方文档:https://pytorch.org/docs/master/nn.html#linear-layers import torchfrom torch i ...
- ECS -------------- 更换系统
由于是在云服务器上所以更换系统比较简单 1.首先将你运行的实例停止 点击确定 2. 将停止的系统进行更换 确定 点击批量更改 更换需要的系统 点击确定 更换系统输入手机验证码. 更换好了 3.修改远程 ...
- Semaphore可以控制并发访问的线程个数
public class SemaphoreTest { //信号量,只允许 3个线程同时访问 ); public static void main(String[] args) { Executor ...
- vCenter6.7的简单安装与使用
1.VMware的vCenter已经有了很大的改进,安装过程极为简单方便. 2. 下载vCenter的安装包即可. 我这边下载的ISO为: VMware-VIM-all--.iso 网上有资源,通过百 ...
- Dart:3.Dart运算符、流程控制
一 . 运算符 以下列出 Dart 的运算符,从高到低按照优先级排列: 描述 运算符 一元运算符(后置) expr++ expr-- () [] . ?. 一元运算符(前置) -expr !expr ...
- 一次kuberneets evicted的历险
一.概述 kubernetes 的eviction检测diskpresure,检测的是kubelet的root-dir.kubelet的默认root-dir是/var/lib/kubelet,可以使用 ...
- logstash之mongodb-log
1.logstash6.5.3 配置收集mongodb的日志: 首先在mongodb服务器上部署filebeat收集日志并上传到logstash进行处理,然后上传到ES. filebeat-conf: ...
- HDU 2007-11 Programming Contest
Can you find it? Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others ...