如何调用动态外部dll

时间:2012-05-01 09:27:24

标签: c# dll

在C#中,我想调用带有签名bool IsValid(string)的外部DLL中的方法, 但是dll的名称来自输入字符串。

我怎么能:

  1. 调用外部方法?

  2. 实施IsValid方法?

3 个答案:

答案 0 :(得分:2)

外部DLL是托管还是非托管?

如果它是托管DLL,Assembly.LoadFrom将允许您加载它并从其中的类调用该函数。

对于非托管DLL,@ lcfseth的链接是正确的方法。

答案 1 :(得分:2)

对于第一个问题我找到了这个答案:

string path = ApplicationMapPath+ objDLLName + ".dll";
System.Reflection.Assembly a = System.Reflection.Assembly.LoadFile(path);
Type t = a.GetType("<namespace>.<Class>");
object instance = a.CreateInstance("<namespace>.<Class>");

MethodInfo m = t.GetMethod("<FuncName>");// Call the method
object res = m.Invoke(instance, new object[] { txtBox.Text }); // Get the result here

答案 2 :(得分:1)

我能想到的唯一方法是使用Win32库和LoadLibrary API函数的特殊性。 这是一个可以帮助您入门的链接:

http://www.codeproject.com/Articles/27298/Dynamic-Invoke-C-DLL-function-in-C