关闭

c# 程序集处理

发表于:2013-7-31 10:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Tim_Lau    来源:51Testing软件测试网采编

  利用反射进行动态加载和调用.

  Assembly ass=Assembly.LoadFrom(DllPath); //利用dll的路径加载,同时将此程序集所依赖的程序集加载进来,需后辍名.dll

  Assembly.LoadFile 只加载指定文件,并不会自动加载依赖程序集.Assmbly.Load无需后辍名

  加载dll后,需要使用dll中某类.

  Type type=ass.GetType(“TypeName”);//利用类型的命名空间和名称获得类型

  需要实例化类型,才可以使用,参数可以人为的指定,也可以无参数,静态实例可以省略

  Object obj = Activator.CreateInstance(type,params[]);//利用指定的参数实例话类型

  调用类型中的某个方法:

  需要首先得到此方法

  MethodInfo mi=type.GetMethod(“MehtodName”);//通过方法名称获得方法

  然后对方法进行调用,多态性利用参数进行控制

  mi.Invoke(obj,params[]);//根据参数直线方法,返回值就是原方法的返回值

  ps: 关于强名称(引自msdn)

  强名称是由程序集的标识加上公钥和数字签名组成的。其中,程序集的标识包括简单文本名称、版本号和区域性信息(如果提供的话)。强名称是使用相应的私钥,通过程序集文件(包含程序集清单的文件,并因而也包含构成该程序集的所有文件的名称和散列)生成的。Microsoft? Visual Studio? .NET 和在 .NET Framework SDK 中提供的其他开发工具能够将强名称分配给一个程序集。强名称相同的程序集应该是相同的。

  通过签发具有强名称的程序集,您可以确保名称的全局唯一性。强名称还特别满足以下要求:

  强名称依赖于唯一的密钥对来确保名称的唯一性。任何人都不会生成与您生成的相同的程序集名称,因为用一个私钥生成的程序集的名称与用其他私钥生成的程序集的名称不相同。

  强名称保护程序集的版本沿袭。强名称可以确保没有人能够生成您的程序集的后续版本。用户可以确信,他们所加载的程序集的版本出自创建该版本(应用程序是用该版本生成的)的同一个发行者。

  强名称提供可靠的完整性检查。通过 .NET Framework 安全检查后,即可确信程序集的内容在生成后未被更改过。但请注意,强名称中或强名称本身并不暗含信任级别,例如由数字签名和支持证书提供的信任。

  在引用具有强名称的程序集时,您应该能够从中受益,例如版本控制和命名保护。如果此具有强名称的程序集以后引用了具有简单名称的程序集(后者没有这些好处),则您将失去使用具有强名称的程序集所带来的好处,并依旧会产生 DLL 冲突。因此,具有强名称的程序集只能引用其他具有强名称的程序集。

  没有强名称的程序集,clr在加载程序集时会缺少版本检查和全局程序集缓存的检查,所以加载时可能会发生冲突哦~

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号