首先设计一个插件,让插件从MarshalByRefObject继承,以方便跨域传递,类型可以任意取名,代码如下:
namespace SomeLib
{
public class Worker:MarshalByRefObject
{
public void DoWork()
{
for (int i = 0; i < 100; i++)
{
Console.WriteLine($"{i + 1}次 {AppDomain.CurrentDomain.FriendlyName}");
Thread.Sleep(TimeSpan.FromSeconds(1));
}
}
}
}
把生成的dll放到主程序目录下,主程序代码如下:
namespace SomeHost
{
class Program
{
static void Main(string[] args)
{
var addinDll = Path.Combine(Environment.CurrentDirectory, @"SomeLib.dll");
var addinAssembly = Assembly.LoadFrom(addinDll);
var addinType = addinAssembly.ExportedTypes.Where<Type>(t => t.IsClass &&