我定义了一个dll(ClassLibrary),它包含了ClassA类,在这个类中,我定义了public int Add(int a,intb)函数。我现在想在程序运行是加入ClassLibrary的引用,而不是在设计时加入引用。
如何处理?
我写的代码,编译出错,如下:
Assembly obj;
obj = System.Reflection.Assembly.Load("ClassLibrary.ClassA
");
int i = obj.Add(2,4);就这几行代码,出错了!!该如何动态引用dll啊?
如何处理?
我写的代码,编译出错,如下:
Assembly obj;
obj = System.Reflection.Assembly.Load("ClassLibrary.ClassA
");
int i = obj.Add(2,4);就这几行代码,出错了!!该如何动态引用dll啊?
解决方案 »
- 第一次学二进制流保存图片,具体的关键的代码不太懂,能否请论坛的里的大虾指点
- 自定义控件,怎么在在表单中插入一个树形的控件
- 如何动态添加一个Label控件
- TIFF格式转换成JPG的算法?
- 通過按enter鍵實現,將文本框的內容到listbox的javascript的函數
- winform程序能否设置私有文件
- 关于C#打包安装的问题
- 如何得到控件的Graphics
- 运行c#程序的机器必须先安装framework么?
- c#中如何实现拖动控件?
- 取得当前DLL路径用哪个API
- datagrid的edit&update,怎么编译总是提示错误'TextBox' is an ambiguous( 不明确的) reference
string DllPath = Application.StartupPath + @"\someDLL.dll";
System.Reflection.Assembly assmble = System.Reflection.Assembly.LoadFile(DllPath);Type tmpType = assmble.GetType("someDLL.ClassA");
System.Reflection.MethodInfo tmpM = tmpType.GetMethod("Add");
object tmpobj = assmble.CreateInstance("someDLL.ClassA");
int i = (int)tmpM.Invoke(tmpobj, new object[]{2,3});----------ClassA的定义--------------------
using System;namespace someDLL
{
/// <summary>
/// ClassA 的摘要说明。
/// </summary>
public class ClassA
{
public ClassA()
{
//
// TODO: 在此处添加构造函数逻辑
//
} public int Add(int a, int b)
{
return a+b;
}
}
}
using someDLL;Assembly obj;
obj = System.Reflection.Assembly.Load("ClassLibrary.ClassA
");
int i = obj.Add(2,4);
System.Reflection.Assembly assmble = System.Reflection.Assembly.LoadFile(DllPath);也就是说System.Reflection.Assembly.LoadFile方法,只能加载绝对路径的Dll,不能加载相对路径的DLL;当然,我的程序也可以将DLL放在一个固定的路径,如:c:/someDll.dll,但这影响了部署的灵活性。hbxtlhx(平民百姓),有何高招?