我正在尝试将已建立的代码转换为.dll,它可以根据主程序的要求加载。 .dll不需要主程序中的任何输入参数,仅用于返回字符串值。我的主要资源是this回答。
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();
}
此方法目前失败,因为.Invoke行发生了TargetParameterCountException("参数计数不匹配")。调试信息表明OutputString在异常时保持为空,这意味着.dll中的代码似乎尚未运行。
提前感谢您对此事的任何帮助。
答案 0 :(得分:0)
更改以下代码
string TargetString = (string)method.Invoke(obj, null);
到
object[] parametersArray = new object[] { "Hello" };
string TargetString = (string)method.Invoke(obj, parametersArray);
您没有将参数值传递给调用方法,因此它存在此类问题。