EXE

时间:2019-02-02 19:47:20

标签: c# windows visual-studio-2010 .net-assembly

我有两个C#DotNet可执行文件:PARENT.EXE和CHILD.EXE。使用Visual Studio 2010构建。

我想从PARENT.EXE加载并调用CHILD.EXE中的方法。到目前为止,我已经能够使用Assembly.LoadFrom将CHILD.EXE作为程序集加载。但是,我不清楚如何在CHILD.EXE中调用该方法。

CHILD.EXE类看起来像这样:

namespace childnamespace;
public class childclass;
public string childmethod()
{
  return "hello world";
}

我想从PARENT.EXE调用childmethod()并取回字符串"hello world"

我看到很多关于如何将EXE作为程序集加载的文章,但没有关于如何在该程序集中实际调用方法的文章。


其他信息:感谢@MJ的回复我在PARENT.EXE中有以下代码

using System;
using System.Reflection;
using System.Diagnostics;
public static class ConsoleTest
{
    public static void Main()
    {
        Assembly SampleAssembly;
        try
        {
            SampleAssembly = Assembly.LoadFrom("child.exe");
            MethodInfo Method = 
              SampleAssembly.GetType("childnamespace.childclass").GetMethod("childmethod");
            if (Method != null)
            {
                Method.Invoke(null, null);  // exception here
            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
    }
}

但是,在指定的行上出现以下异常:

  

调用的目标已引发异常。

内部异常:

  

值不能为空。

1 个答案:

答案 0 :(得分:2)

将子方法设为静态方法。

.GetType("childnamespace.childclass").GetMethod("childmethod").Invoke(null, null);