标签:Load 反射 Assembly 配置文件 程序 key
机房重构遇到了反射+配置文件,查了一些资料,接下来了解一下
1.什么是反射:
Reflection,中文翻译为反射。 这是.Net中获取运行时类型信息的方式,.Net的应用程序由几个部分:‘程序集(Assembly)’、‘模块(Module)’、‘类型(class)’组成,而反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组成部分的相关信息。
2.反射的作用:
在.Net Framework中提供了反射机制,可以在加载程序运行时,动态的获取和加载程序集(dll也就是动态链接库),获取程序集的信息,可以对程序集的类进行实例化,调用类中的方法。也就是说,在.Net Framework中提供了反射机制,可以在加载Factory层运行时,动态的获取和加载DAL层(dll也就是动态链接库),获取DAL层的信息,可以对DAL层的类进行实例化,调用DAL层类中的方法等。
3.代码实例:
配置文件:
这里有两个键值对,key值value值
第二对key,value值对应sqlHelper中的代码,可以看出从配置文件获取的字符串connstr对应配置文件的key值
ConfigurationManager:读取配置文件
AppSettings:获取配置文件数据
ConnStr:连接字符串
工厂层:
配置文件中的第一对key,value值对应工厂层的代码,DB对应key值,StrDB对应value值
StrDB +"." + "CheckDAL" =DAL.CheckDAL
4.Assembly类
在程序中,如果我们要动态加载一个程序集怎么办呢?有几种方式可以使用,分别是Load,LoadFrom和LoadWithPartialName三个Assembly的静态方法.主要说一下Load方法
Assembly.Load()方法,该方法会有多个重载版本,其中一个就是提供程序集的详细信息,即程序集的标识,包括程序集的名称,版本,区域信息,公有密钥标记,全部都是以一个字符串的形式提供;
关于反射Assembly.Load("程序集").CreateInstance("命名空间.类")
而不管在哪一层写这段代码其中的("程序集")读取的实际是web层bin文件夹下的dll,也就是说你反射的类的程序集dll在web层的bin下必须有
注意CreateInstance()一定是命名空间.类名,否则创建的实例为空
Assembly.Load("程序集名")
标签:Load,反射,Assembly,配置文件,程序,key 来源: https://blog.csdn.net/weixin_44682554/article/details/113092183
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。