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种加载方法 比较简单 此不赘述