2023年12月13日发(作者:)
c#使用反射加载程序集Assembly。load()使用全过程
第一步 :创建一个将被加载的程序集 类库Test
using System;
using c;
using ;
using ;
namespace Test
{
public class Class1
{
string name, age;
public Class1(string Name, string Age)
{
name = Name;
age = Age;
}
public string GetMessage()
{
return name +","+ age;
}
public string GetJvalue(int a,int b)
{
return (a+b).ToString();
}
}
}
第二步:创建强命名程序集
首先打开visual studio 2008命令提示(开始-->程序-->microsoft visual studio 2008-->visual studio tools-->visual studio 命令提
示),在其中输入:sn -k 回车,这样就生成了 ,在路径C:Program FilesMicrosoft Visual Studio 9VC找到
文件,放在Test类库的根目录
然后右键 类库Test 属性--签名
最后编译 得到 强命名程序集
第三步:拷贝 到需要使用它的项目BIN目录下
(如果要使用自己定义的目录可以在 配置文件 在 privatePath="DllPath"/>) 这样可以将放入DllPath文件夹下亦可 然后 代码加载 使用 如下: 在此之前 打开“Visual Studio 2008 命令提示”,输入: sn -T C: 回车 如果程序集具有强名称,则会输出结果: 公钥标记为8d7b357e8456bb71(PublicKeyToken) using System; using c; using ; using ; using ; using trols; using tion; public partial class Default4 : { protected void Page_Load(object sender, EventArgs e) { Invoke("Test", "1.0.0.0", "neutral", "8d7b357e8456bb71", "Test", "Class1", "GetMessage",new object[] {"1","p"}); } private string Invoke(string lpFileName, string Version, string Culture, string PublicKeyToken, string Namespace, string ClassName, string lpProcName,object[] { string ssc = ""; try { // 载入程序集 Assembly MyAssembly = (lpFileName + ", Version=" + Version + ", Culture=" + Culture + ", PublicKeyToken=" + PublicKeyToken); Type[] type = es(); foreach (Type t in type) {// 查找要调用的命名空间及类 if (ace == Namespace && == ClassName) {// 查找要调用的方法并进行调用 MethodInfo m = hod(lpProcName); if (m != null) { object o = Instance(t, objArr); ssc = (string)(o, null); (o, null); } else ssc=" 装载出错 !"; } } }//try catch (ferenceException e) { ssc=e; }//catch return ssc; } }测试成功! 另外还有2种加载方法 比较简单 此不赘述


发布评论