Запустите метод из исполняемого файла - PullRequest
0 голосов
/ 22 мая 2010

Мне нужно вызвать метод из исполняемого файла

 ProcessStartInfo startInfo = new ProcessStartInfo(@"exeParser.exe");

        startInfo.WindowStyle = ProcessWindowStyle.Normal;
        startInfo.CreateNoWindow = false;
        startInfo.RedirectStandardOutput = true;
        startInfo.UseShellExecute = false;


        startInfo.Arguments = ??

Я не знаю, как вызвать метод и передать параметры

Любая помощь, пожалуйста ??

Исполняемый файл мой, но у меня проблемы с использованием вещей в веб-приложении, поэтому я подумал, что было бы лучше назвать его как процесс

Спасибо

Ответы [ 2 ]

1 голос
/ 22 мая 2010

Исполняемые файлы имеют только одну точку входа, обычно называемую «Main».

Чтобы вызвать определенный метод, приложение должно будет предоставить аргумент командной строки (или несколько) для имени метода и его аргументов.Это будет означать изменение приложения для интерпретации этих аргументов и вызова соответствующего метода.

Вам нужно будет изменить ваш exeParser, чтобы он принимал аргументы, а затем действовать на них.

Например, вы 'я мог бы добавить:

\ method [name] \ arguments [1], [2], [3]

Затем проанализируйте это, чтобы получить имя и списокАргументы.

Если у вас есть только один или два метода, вы можете жестко закодировать переключатель:

switch (methodName)
{
     case "add":
         result = this.Add(arg1, arg2);
         break;
     case "subtract":
         result = this.Subtract(arg1, arg2);
         break;
     default:
         break;
}

Если у вас есть больше или вы хотите сделать код более универсальным, вам нужно использоватьотражение, чтобы получить метод и вызвать его.

0 голосов
/ 22 мая 2010

Вы не можете, если метод не представлен публично в сборке.

Конечно, если исполняемый файл был необъяснимым .NET .exe, то, вероятно, вы могли бы использовать что-то вроде Reflector для дизассемблирования.код и скопируйте его в вашу программу (не рекомендуется), НО вам придется проверить законность этого, если у вас нет соответствующего исполняемого файла.

...