在设计经常会碰到调用可执行程序,这里我们可以采用Assembly.LoadFrom方法来实现。注意这里面“另外一个EXE文件”既可以是EXE文件,也可以是一个DLL文件。
首先我们可以创建一个类库(或者一个控制台程序)
using System;
using System.Reflection;
namespace AppDomainDLL
{
public class AssemblyProcessor
{
public void Process(string name)
{
Console.WriteLine("hello " + name);
}
}
}
编译成功后,再新建一个工程,并把刚才编译好的文件放入要调用的可执行文件的同一目录下:
using System;
using System.Reflection;
namespace CallOutput
{
class Program
{
static void Main (string[] args)
{
Assembly assembly = Assembly.LoadFrom("AppDomainDLL.dll");
Type[] types2 = assembly.GetTypes();
foreach (Type t in types2)
{
Console.WriteLine(t.FullName);
}
Type myType = assembly.GetType("AppDomainDLL.AssemblyProcessor");
Console.WriteLine(myType.FullName);
MethodInfo mymethod = myType.GetMethod("Process");
Object obj = Activator.CreateInstance(myType);
object[] name = new object[] { "upc"};
string info=(string)mymethod.Invoke(obj, name);
Console.WriteLine(info);
Console.ReadLine();
}
}
}
其中Invoke返回一个调用方法的返回值装箱的Object对象
本文参考链接:https://www.cnblogs.com/xihong2014/p/14705390.html