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中的代码似乎还没有运行。

事先感谢您对此事的帮助。

c#从文件加载DLL,在DLL中执行逻辑,并使用返回的字符串

修改下面的代码

string TargetString = (string)method.Invoke(obj, null);

object[] parametersArray = new object[] { "Hello" };
string TargetString = (string)method.Invoke(obj, parametersArray);

您没有将参数值传递给调用方法,所以它会有这样的问题。