Метод вызова C # в EXE - PullRequest
       16

Метод вызова C # в EXE

0 голосов
/ 02 февраля 2019

У меня есть два исполняемых файла C # DotNet: PARENT.EXE и CHILD.EXE.Построен с Visual Studio 2010.

Я хочу загрузить и вызвать метод в CHILD.EXE из PARENT.EXE.До сих пор я был в состоянии загрузить CHILD.EXE как сборку, используя Assembly.LoadFrom.Однако я не совсем понимаю, как вызывать метод в CHILD.EXE.

Класс CHILD.EXE выглядит следующим образом:

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

Я хочу вызвать childmethod () из PARENT.EXE и получить обратно строку "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 голосов
/ 02 февраля 2019

Сделать метод-метод статическим методом.

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