zoukankan      html  css  js  c++  java
  • 反射学习系列3反射实例应用

    反射学习系列目录

    反射学习系列1-反射入门

    反射学习系列2-特性(Attribute)

    反射学习系列3-反射实例应用

    作者

    例子这个东西其实挺难弄得,弄个简单的,虽然能说明问题但却容易让人觉得没实用价值,弄个有实用价值却又往往牵扯很多别的技术甚至牵扯很多业务逻辑,看起来很复杂很难懂。在这里我尽量追求几个有实用价值又不复杂的例子。
    1、使用反射通过读取配置文件来动态的创建相关类的对象

    我们先来看看Main函数和需要动态加载的对象在同一个程序集的情况

    结构图:


    接口

    接口
    TextFileLog
    XmlFileLog
    App.config配置
    主程序

    如果在不同的程序集下,那主函数和配置会略有不同

    不同程序集主函数

    这部分源码下载

    源码下载


    2、插件编程技术
    插件是指遵循一定的接口规范、可以动态加载和运行的程序模块。从上面的例子可以看出,通过反射可以非常方便的动态加载程序集。因此,利用反射的动态加载代码能力,可以很容易的实现插件。插件编程的要点是使用接口来定义插件的功能特征。插件的宿主程序通过接口来确认、装载和执行插件的功能,实现插件功能的所有类都必须实现定义插件的接口。

    这里只是选贴一部分代码,详细分析请看源码

    结构图

    接口部分

    接口

    宿主实现

    宿主实现

    ILog的实现和上例基本一样,请参考

    主程序代码

    主程序代码

    插件编程源码下载

    源码下载

    3、分析对象,得到对象中的属性值
    大家使用应都用过asp.net中的DropdownList,在绑定其值的时候绝大多数情况下我们做的都是同样的事情,获得数据源,根据数据源中的某些列绑定控件,下边我们来说说通用情况的处理方式。我们只需要提供数据集合,以及需要绑定到控件的两个属性(text,value)名即可。

    Code
  • 相关阅读:
    java中将一个文件夹下所有的文件压缩成一个文件
    nodejs 指定全局安装路径和缓存路径
    webstrom 2019.2激活教程+激活工具
    CoreOnLineTransactionService.java
    CoreOnLineTransactionMapper.xml
    短信长度判断:判断是长短信
    sxnx-sms山西农信错误信息+处理方法
    Cannot format given Object as a Date
    cpu个数、核数、线程数、Java多线程关系的理解+物理cpu数和cpu核数和逻辑cpu数和vcpu区别
    如何判断短信内容是否是长短信??
  • 原文地址:https://www.cnblogs.com/nuaalfm/p/1286640.html
Copyright © 2011-2022 走看看