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接口

  • 相关阅读:
    vuejs组件交互
    markdown table语法
    vue循环中的v-show
    apache跨域
    sublime text执行PHP代码
    PHP语法
    方法(method)和函数(function)有什么区别?
    PHP MVC单入口
    phpstudy部署thinkPHP
    MACD判断定背离,底背离
  • 原文地址:https://www.cnblogs.com/jiangchengbiao/p/9918010.html
Copyright © 2011-2022 走看看