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

时间:2016-10-13 05:40:10

标签: c# dll return

我正在尝试将已建立的代码转换为.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中的代码似乎尚未运行。

提前感谢您对此事的任何帮助。

1 个答案:

答案 0 :(得分:0)

更改以下代码

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

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

您没有将参数值传递给调用方法,因此它存在此类问题。