1,反射获取程序集的三种方式
Assembly assenbly=Assembly.LoadFile()//这种只需要提供程序集的名称
Assembly assenbly=Assembly.LoadFile(Path)//这种需要程序集 的路径
Assembly assenbly=Assembly.Load("Ace.dll") //这种需要程序集的名称和后缀名
2,获取类型
Type[] types=assenbly.GetType();//获取所有类
Type[] types=assenbly.GetExportedTypes();//获取所有公共类
types.First(c=>c.name=...);
Type type=assenbly.GetType(“命名空间.类名”);//获取指定类名的类
3.GetType
PropertyInfo[] props=types.Getproperties();//获取所有属性
PropertyInfo[] field=types.GetFields();//获取所有字段
- PropertyInfo[] methods=types.GetMethods();//获取所有方法
4,实例化 Assembly自带的CreateInstance
object o=assembly.CreateInstance("命名空间.类名");
o.Name="艾斯奥特曼"//报错
dynamic d=assembly.CreateInstance("命名空间.类名");//自动转换渲染 没有自动提示,容易出错
d.Name="艾斯奥特曼"
5,使用多态
以上改为://接口作为层和层的衔接
接口 d=(接口)assembly.CreateInstance("命名空间.类名");//自动转换渲染 没有自动提示,容易出错
d.Name="艾斯奥特曼"
6,配置文件
在AppSetting里面获取字符段,string configuration=ConfigurationManager.AppSettings["key"];
使用反射可以只在配置文件修改配置文件
7,在有构造函数的类使用
Assembly assenbly=Assembly.LoadFile(Path)//这种需要程序集 的路径
Type type=assenbly.GetType(“命名空间.类名”);//获取指定类名的类
IUltraman b= (IUltraman )Activor.CreateInstrance(type,Params 构造函数的参数);