System.Reflection.TargetParameterCountExeception:参数计数不匹配

本文关键字:不匹配 参数 Reflection TargetParameterCountExeception System | 更新日期: 2023-09-27 18:34:19

System.Resources.ResourceManager ResManager
    = new System.Resources.ResourceManager(
        "derp",
        System.Reflection.Assembly.GetExecutingAssembly());
byte[] cmBytes
    = System.Convert.FromBase64String((string)ResManager.GetObject("cFile"));
/*BinaryWriter bw1
      = new BinaryWriter(new FileStream("test.exe", FileMode.Create));
  bw1.Write(cmBytes);
  bw1.Flush();
  bw1.Close();*/
Assembly asm = Assembly.Load(cmBytes);
MethodInfo mi = asm.EntryPoint;
object go = asm.CreateInstance(mi.Name);
mi.Invoke(go, null);

错误指向mi.Invoke(go, null),我在这里被难住了。

System.Reflection.TargetParameterCountExeception:参数计数不匹配

在这种情况下,入口点采用参数 - 正如异常所建议的那样(可能是字符串列表),所以显然你不能在没有参数的情况下调用它(null作为第二个参数)。尝试:

mi.Invoke(go, new object[] { new string[0] } );

请注意,这当然仅适用于具有接受字符串列表的入口点的程序集。根据要运行的程序集的类型,您可能希望向其添加更多逻辑。您还可以在程序集中static void Main(),以便您的版本正常工作。