一.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相关推荐

  1. 关于反射Assembly.Load(程序集).CreateInstance(命名空间.类)

    关于反射Assembly.Load("程序集").CreateInstance("命名空间.类") 而不管在哪一层写这段代码其中的("程序集" ...

  2. C#反射Assembly 具体说明

    1.对C#反射机制的理解 2.概念理解后,必须找到方法去完毕,给出管理的主要语法 3.终于给出有用的样例,反射出来dll中的方法 反射是一个程序集发现及执行的过程,通过反射能够得到*.exe或*.dl ...

  3. C#反射Assembly 详细说明

    1.对C#反射机制的理解 2.概念理解后,必须找到方法去完成,给出管理的主要语法 3.最终给出实用的例子,反射出来dll中的方法 反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.dl ...

  4. 反射(Assembly)

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. 【武汉理工大学】软件工程总复习 知识点整合

    「武汉理工大学 软件工程复习」第一章 | 软件工程概述_Graski的博客-CSDN博客 [ 主要考点 ] 软件特性.软件危机.软件工程基本目标(创建高质量的软件.运行正确的软件.足够好的软件).软件 ...

  6. 总结,复习,整合命令执行漏洞实现及其绕过(绕过方式大全)

  7. [C#复习向整合]object与装箱拆箱

    一.object 所有类型的基类,是个类,引用类型 基于里氏替换原则,用object装所有对象 可以用来表示不确定类型,作为函数参数类型. class Son {public void Speak() ...

  8. Unity C#基础之 反射反射,程序员的快乐

    反射反射,程序员的快乐 这句话想必大家都经常听过,基本上在绝大多数的框架和一些设计模式中都能看到反射的身影(MVC.IOC.AOP.O/RM), 反射:是.Net Framework提供的一个帮助类库 ...

  9. 第六节:反射(几种写法、好处和弊端、利用反射实现IOC)

    一. 加载dll,读取相关信息 1. 加载程序集的三种方式 调用Assembly类下的三个方法:Load.LoadFile.LoadFrom. 1 //1.1 Load方法:动态默认加载当前路径下的( ...

  10. 反射,System.Type类

    http://m.blog.csdn.net/blog/woddle/40623333 两个现实中的例子: 1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况.这是如何做 ...

最新文章

  1. CentOS+Nginx+uWSGI+Python多站点环境搭建
  2. 5G/4G:空口帧结构之帧、子帧、时隙、符号、RB。
  3. 150m虚拟主机容量不足
  4. Java日期处理 开始时间-结束时间查询
  5. Mac(OS X)使用brew安装软件
  6. 10853k1_领导学基础_21秋考试
  7. wince下Gpio 驱动程序
  8. JVM 学习二:类加载器子系统
  9. python的异常处理及异常类定义
  10. 完整的CJK Unicode范围(5.0版)
  11. 元素查找(xpath)
  12. 前端基础 IE浏览器渲染-重置浏览器默认样式
  13. python爬虫案例
  14. matlab的默认字体_为MATLAB更换支持中文的等宽字体
  15. 光学软件国产化项目开发心得
  16. jmail的使用说明
  17. 分享133个JSP源码,总有一款适合你
  18. 常见的显示屏分辨率标准汇总
  19. 计算机101页报告翻译,冯诺伊曼 101页报告 First Draft of a Report on the EDVAC
  20. OpenCV图像处理知识点梳理

热门文章

  1. 微信公众账号调取用户昵称和用户头像
  2. [UE4][Material] Spline样条网格材质消失问题记录
  3. freemarker word模板导出图片循环
  4. 怎么给视频去水印?手把手教你去水印
  5. 算法大赛神器:集成学习方法关键点介绍
  6. 火狐浏览器下载慢,如何提高
  7. oracle 物化视图 on demand,【案例】Oracle物化视图 on prebuilt table故障常见解决办法...
  8. php如何上传doc文件,php实现将上传word文件转为html的方法
  9. 纳米金13nm|金属纳米粒子/Nano gold制备方法-齐岳生物
  10. 单细胞测序数据挖掘与课题设计