c#从文件加载DLL,在DLL中执行逻辑,并使用返回的字符串
本文关键字:DLL 字符串 返回 执行 文件 加载 | 更新日期: 2023-09-27 18:12:54
我正试图将已建立的代码转换为.dll,可以根据主程序的要求加载。dll不需要主程序的任何输入参数,并且只返回一个字符串值。我的主要资源就是这个答案。
dll代码的结构:
namespace DLL
{
class DLLClass
{
public string PublicString(string OutputString)
{
// ... existing code ...
return OutputString;
}
}
}
主程序尝试加载.dll,执行逻辑,并检索返回的字符串以便在控制台中显示:
static void Main()
{
var DLLPath = new FileInfo("DLL.dll");
Assembly assembly = Assembly.LoadFile(DLLPath.FullName);
Type t = assembly.GetType("DLL.DLLClass");
object obj = Activator.CreateInstance(t);
MethodInfo method = t.GetMethod("PublicString");
string TargetString = (string)method.Invoke(obj, null);
Console.WriteLine("End of dll");
Console.WriteLine(TargetString);
Console.ReadLine();
}
此方法目前失败,因为TargetParameterCountException("参数计数不匹配")发生在. invoke行。调试信息表明OutputString在异常发生时仍然为空,这意味着.dll中的代码似乎还没有运行。
事先感谢您对此事的帮助。
修改下面的代码
string TargetString = (string)method.Invoke(obj, null);
object[] parametersArray = new object[] { "Hello" };
string TargetString = (string)method.Invoke(obj, parametersArray);
您没有将参数值传递给调用方法,所以它会有这样的问题。