ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

扎实基础_2语法基础_反射

2020-05-25 15:58:36  阅读:284  来源: 互联网

标签:类库 反射 Assembly 示例 基础 dll 语法 扎实 IOC


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有