扎实基础_2语法基础_反射
作者:互联网
1:反射是什么
微软提供的一个帮助类库,为了让我们不用在vs里面添加引用从而直接动态加载dll 去用里面的方法
2:为什么要用反射
使用第三方类库下
3:如何使用反射
using IOC示例; using System; using System.Reflection;//1 添加使用反射的类库 namespace 泛型 { class Program { static void Main(string[] args) { //2加载dll //Assembly assembly = Assembly.Load("IOC示例 ");// dll名称 默认到当前目录下查找 //Assembly assembly2 = Assembly.LoadFrom("IOC示例.dll");// 全名称查找 Assembly assembly3 = Assembly.LoadFile(@"C:\Users\Administrator\source\repos\ConsoleApp1\IOC示例\bin\Debug\netcoreapp3.1\IOC示例.dll");// 全名称= 全路径+dll名称 + 后缀 //3 获取dll的类 Type type = assembly3.GetType("IOC示例.IOC_kaimotuo"); //4 创建对象 object ob = Activator.CreateInstance(type); //5 调用方法 dynamic dDbHelper = Activator.CreateInstance(type);//dynamic 是一个动态类型 dDbHelper.随便写什么都不会报错(); //可以避开编译器的检查,运行时检查 存在安全问题 //知识扩展 //因为c#是强类型语言,所以在编译的时候就会确定类型 使用dynamic可以把类型推迟到运行时检查,但是由此就会引发安全问题 //6 类型限定与转换 IDrivingCar iDBHelper = ob as IDrivingCar; //7 调用方法 iDBHelper.kaiche(); //8;想要使用一个dll里面的类方法这么麻烦,和我原先直接类实例化差别好大,如果我要使用别的那是不是又得复制黏贴 //仔细揣摩以后的需求,这里好像是关于类的创建,那么是不是和设计模式的创建型里面的工厂模式很像 //反射+简单工厂+配置文件,完成动态加载dll SimlpFactory simlpFactory = new SimlpFactory(); var a= SimlpFactory.CreateInstentce(); a.kaiche(); Console.WriteLine("Hello World!"); } } }View Code
标签:类库,反射,Assembly,示例,基础,dll,语法,扎实,IOC 来源: https://www.cnblogs.com/LZXX/p/12957296.html