在EXE C#调用方法

问题描述 投票:0回答:1

我有两个C#DOTNET的可执行文件:PARENT.EXE和CHILD.EXE。内置与Visual Studio 2010。

我想加载和PARENT.EXE调用一个方法CHILD.EXE。到目前为止,我已经能够加载CHILD.EXE作为大会使用Assembly.LoadFrom。不过,我不是如何调用该方法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);
        }
    }
}

但是我得到的指示线以下异常:

异常已通过调用的目标引发异常。

内部异常:

值不能为空。

c# windows visual-studio-2010 .net-assembly
1个回答
2
投票

让childmethod的静态方法。

.GetType("childnamespace.childclass").GetMethod("childmethod").Invoke(null, null);
© www.soinside.com 2019 - 2024. All rights reserved.