[C#复习向整合]反射 -Assembly与Activator
一.Activator
用于快速实例化对象的类,用于将Type对象快捷实例化为对象
先写一个测试类
class Test
{private int i = 1;public int j = 0;public string str = "123";public Test(){}public Test(int i){this.i = i;}public Test(int i, string str) : this(i){this.str = str;}public void Speak(){Console.WriteLine(i);}
}
对比用上一章不用Activator的实例化方法
//拿到Type类型
Type test = typeof(Test);
//获得构造函数
ConstructorInfo ctor = test.GetConstructor(new Type[0]);
//调用构造函数
Test obj = ctor.Invoke(null) as Test;
Activator快速实例化对象
//1.无参构造
Type test = typeof(Test);
//默认调用无参构造函数
//Activator在system命名空间,无需反射命名空间
Test obj = Activator.CreateInstance(test) as Test;
//2.有参构造
//注意!参数一定要匹配
Test obj2 = Activator.CreateInstance(test, 99) as Test;//调用一个参数的构造函数
Test obj3 = Activator.CreateInstance(test, 22, "2333") as Test;//两个参数的构造函数
二.Assembly
Assembly: 程序集类
用来加载其他程序集,加载后才能用Type来使用其他程序集中的信息.
如果要想使用不是自己程序集中的内容,需要先加载程序集,比如dll
//加载一个程序集
//1.Assembly.Load("程序集名称");//同一文件下其他程序集
//2.Assembly.LoadFrom("包含程序集清单的文件的名称或路径");//不同一文件夹下
//3.Assembly.LoadFile("要加载的文件的完全限定路径");
//先找到其编译后的dll路径
//需要命名空间System.Reflection
Assembly asembly =Assembly.LoadFrom(@"G:\C#\项目\pro1Csharp\AssemblyTest\bin\Debug\netcoreapp3.1\AssemblyTest");//字符串前加@取消\的转义字符
//打印查看元数据
Type[] types = asembly.GetTypes();
for (int i = 0; i < types.Length; i++)
{Console.WriteLine(types[i]);
}
//加载程序集中的一个类对象
Type test = asembly.GetType("Test");
//获得所有成员
MemberInfo[] members = test.GetMembers();
//实例化
object objTest = Activator.CreateInstance(test);
三.创建一个类库文件
直接创建类库(.NET Framework)即可
资料来源<唐老狮C#教程>
[C#复习向整合]反射 -Assembly与Activator相关推荐
- 关于反射Assembly.Load(程序集).CreateInstance(命名空间.类)
关于反射Assembly.Load("程序集").CreateInstance("命名空间.类") 而不管在哪一层写这段代码其中的("程序集" ...
- C#反射Assembly 具体说明
1.对C#反射机制的理解 2.概念理解后,必须找到方法去完毕,给出管理的主要语法 3.终于给出有用的样例,反射出来dll中的方法 反射是一个程序集发现及执行的过程,通过反射能够得到*.exe或*.dl ...
- C#反射Assembly 详细说明
1.对C#反射机制的理解 2.概念理解后,必须找到方法去完成,给出管理的主要语法 3.最终给出实用的例子,反射出来dll中的方法 反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.dl ...
- 反射(Assembly)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 【武汉理工大学】软件工程总复习 知识点整合
「武汉理工大学 软件工程复习」第一章 | 软件工程概述_Graski的博客-CSDN博客 [ 主要考点 ] 软件特性.软件危机.软件工程基本目标(创建高质量的软件.运行正确的软件.足够好的软件).软件 ...
- 总结,复习,整合命令执行漏洞实现及其绕过(绕过方式大全)
- [C#复习向整合]object与装箱拆箱
一.object 所有类型的基类,是个类,引用类型 基于里氏替换原则,用object装所有对象 可以用来表示不确定类型,作为函数参数类型. class Son {public void Speak() ...
- Unity C#基础之 反射反射,程序员的快乐
反射反射,程序员的快乐 这句话想必大家都经常听过,基本上在绝大多数的框架和一些设计模式中都能看到反射的身影(MVC.IOC.AOP.O/RM), 反射:是.Net Framework提供的一个帮助类库 ...
- 第六节:反射(几种写法、好处和弊端、利用反射实现IOC)
一. 加载dll,读取相关信息 1. 加载程序集的三种方式 调用Assembly类下的三个方法:Load.LoadFile.LoadFrom. 1 //1.1 Load方法:动态默认加载当前路径下的( ...
- 反射,System.Type类
http://m.blog.csdn.net/blog/woddle/40623333 两个现实中的例子: 1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况.这是如何做 ...
最新文章
- CentOS+Nginx+uWSGI+Python多站点环境搭建
- 5G/4G:空口帧结构之帧、子帧、时隙、符号、RB。
- 150m虚拟主机容量不足
- Java日期处理 开始时间-结束时间查询
- Mac(OS X)使用brew安装软件
- 10853k1_领导学基础_21秋考试
- wince下Gpio 驱动程序
- JVM 学习二:类加载器子系统
- python的异常处理及异常类定义
- 完整的CJK Unicode范围(5.0版)
- 元素查找(xpath)
- 前端基础 IE浏览器渲染-重置浏览器默认样式
- python爬虫案例
- matlab的默认字体_为MATLAB更换支持中文的等宽字体
- 光学软件国产化项目开发心得
- jmail的使用说明
- 分享133个JSP源码,总有一款适合你
- 常见的显示屏分辨率标准汇总
- 计算机101页报告翻译,冯诺伊曼 101页报告 First Draft of a Report on the EDVAC
- OpenCV图像处理知识点梳理
热门文章
- 微信公众账号调取用户昵称和用户头像
- [UE4][Material] Spline样条网格材质消失问题记录
- freemarker word模板导出图片循环
- 怎么给视频去水印?手把手教你去水印
- 算法大赛神器:集成学习方法关键点介绍
- 火狐浏览器下载慢,如何提高
- oracle 物化视图 on demand,【案例】Oracle物化视图 on prebuilt table故障常见解决办法...
- php如何上传doc文件,php实现将上传word文件转为html的方法
- 纳米金13nm|金属纳米粒子/Nano gold制备方法-齐岳生物
- 单细胞测序数据挖掘与课题设计