要把反射用到的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接口