EXE中的C#调用方法
C# Call Method in EXE
我有两个 C# DotNet 可执行文件:PARENT.EXE 和 CHILD.EXE。使用 Visual Studio 2010 构建。
我想从 PARENT.EXE 加载并调用 CHILD.EXE 中的方法。到目前为止,我已经能够使用 Assembly.LoadFrom 将 CHILD.EXE 作为程序集加载。但是,我不清楚如何调用 CHILD.EXE.
中的方法
CHILD.EXE class 看起来像这样:
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);
}
}
}
但是我在指定行收到以下异常:
Exception has been thrown by the target of an invocation.
内部异常:
Value cannot be null.
将 childmethod 设为静态方法。
.GetType("childnamespace.childclass").GetMethod("childmethod").Invoke(null, null);
我有两个 C# DotNet 可执行文件:PARENT.EXE 和 CHILD.EXE。使用 Visual Studio 2010 构建。
我想从 PARENT.EXE 加载并调用 CHILD.EXE 中的方法。到目前为止,我已经能够使用 Assembly.LoadFrom 将 CHILD.EXE 作为程序集加载。但是,我不清楚如何调用 CHILD.EXE.
中的方法CHILD.EXE class 看起来像这样:
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);
}
}
}
但是我在指定行收到以下异常:
Exception has been thrown by the target of an invocation.
内部异常:
Value cannot be null.
将 childmethod 设为静态方法。
.GetType("childnamespace.childclass").GetMethod("childmethod").Invoke(null, null);