1

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

我怎样才能:

  1. 调用外部方法?

  2. 实现IsValid方法?

4

3 回答 3

3

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

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
于 2012-05-02T08:18:06.893 回答
2

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

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

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

于 2012-05-01T20:11:10.317 回答
1

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

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

于 2012-05-01T09:39:17.363 回答