zoukankan      html  css  js  c++  java
  • 反射

    要把反射用到的dll拷贝到当前程序运行的根目录中

    Assembly可以加载DLL程序集 (反射的方式加载程序器)

    Assembly assembly = Assembly.Load("Ruanmou.DB.Sqlserver");

    找到这个类

    直接new一个具体对象是直接写死了   

    字符串不算写死 可以吧字符串统一到配置文件中 

     只有需要修改程序中的代码才算写死   配置文件随时可以修改

    利用反射 不依赖于接口的实现 依赖于接口

     连接口都不用依赖  不需要通过具体对象和接口可以调用 类的方法

    如果这个类是有带参数的构造函数  在CreateInstance方法的第二个参数中添加

    反射可以获取类中私有的方法 构造函数      可以破坏单例模式

    一个类库生成两个文件 一个dll  一个pdb  我们只需要dll  pdb是调试需要的文件 可以不用

    如果要获取泛型类  assembly.GetType("DB.Sqlhelp.ReflectionTestcs`2");  表示该泛型类有两个T参数

    ***************************

                var allTypes = typeof(IProfile)
                    .Assembly
                    .GetTypes()
                    .Where(type => type.IsClass)
                    .Where(type => typeof(IProfile).GetTypeInfo().IsAssignableFrom(type))
                    .ToList();
    

      1.获取IProfile接口所在的程序集

      2获取这个程序集中的所有类

      3.所有类中排除接口和值类型的类

      4.当前type类需要实现IProfile接口

  • 相关阅读:
    三种方法使HTML单页面输入密码才能访问
    JAVA知识汇总
    session 一致性的解决方案
    Debian 9 Stretch国内常用镜像源
    Java开发工具推荐
    Centos配置vsftpd
    [转]php实时输出内容
    php javascript comet
    使用安装 php-memcache-client
    [转]网页实时聊天之js和jQuery实现ajax长轮询 PHP
  • 原文地址:https://www.cnblogs.com/jiangchengbiao/p/9918010.html
Copyright © 2011-2022 走看看