• c#反射应用


    接上篇更新:

    1.什么是反射

    反射:Reflection,System.Reflection命名空间,是微软提供的帮助类库

    反射加载dll,读取程序集(Assembly),模块(Module),类(Class),方法(Method)

    Dll包括:IL和metada

    IL:中间语言,标准的面向对象语言,但是不太好阅读

    Medata:元数据,数据清单,只是描述了类中有什么

    反射破坏单例其实就是反射可以调用私有构造函数

    2.反射的优缺点

      优点:1.降低耦合性,提高自适应能力。[减少对象与对象之间的依赖,只需要知道类名(字符串),方法名(字符串),就可以调用]

            2.允许程序创建和控制任何类的对象,无需提前硬编码目标类[可以突破特定权限,可以做到普通方式无法做到的比如可以通过反射调用私有方法]

    缺点:1.编写比较困难,代码量大,编写的时候容易出错

         2. 性能问题,性能损耗大,经过测试:发现反射确实性能损耗比较大 普通方式:60, 反射:5470,确实让我们无法接受,经过缓存优化之后发现,普通方式:42反射:80,对于性能损耗,大家要理性看待,因为执行的数量巨大,中间的这些性能损耗是可以忽略不计。

     

     

    反射的使用

     

    使用LoadFile加载程序集

    使用LoadFrom加载程序集

     

    使用反射获取类型,创建对象

     使用反射+简单工厂+配置文件获取类型,创建对象

     

     

    反射选择不同构造函数创建对象

     

     反射调用方法

    反射调用普通方法

     

     反射调用有参数方法

     反射调用重载方法

     

     反射调用私有方法

     

     反射调用静态方法

     

     

     反射调用泛型方法,泛型类

    反射在普通类中调用泛型方法:

    反射在泛型类中调用泛型方法:

     

    另外一种:

     

     

    反射操作类内属性

     

     

     

  • 相关阅读:
    C# Dapper 2.0源码
    C#实现隐藏手机号、邮箱、姓名等敏感信息扩展方法
    C# 自定义弹窗提醒
    用sqlyog 连 mysql 8 时,报错:plugin caching_sha2_password could not be loaded
    汇总最全的C#.NET(数据库/.net/其它)面试题及参考答案
    安装sql2008r2后,数据库引擎为空是为什么?
    SQL Server 2008找不到SQL Server配置管理器的问题
    PrintDialog.ShowDialog不能显示打印对话框
    PrintDialog控件
    PrintPreviewControl控件
  • 原文地址:https://www.cnblogs.com/dqly/p/11692734.html
Copyright © 2020-2023  润新知