我有两个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);
}
}
}
但是我得到的指示线以下异常:
异常已通过调用的目标引发异常。
内部异常:
值不能为空。
让childmethod的静态方法。
.GetType("childnamespace.childclass").GetMethod("childmethod").Invoke(null, null);