在.NET中加载插件,通常需要使用反射和动态加载的技术。以下是一个简单的示例,展示了如何在.NET中加载插件:
public interface IPlugin
{
string Name { get; }
void Execute();
}
public class MyPlugin : IPlugin
{
public string Name => "My Plugin";
public void Execute()
{
Console.WriteLine("MyPlugin is executing...");
}
}
using System;
using System.IO;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
string pluginPath = @"C:\path\to\plugin\directory";
string[] dllFiles = Directory.GetFiles(pluginPath, "*.dll");
foreach (string dllFile in dllFiles)
{
Assembly assembly = Assembly.LoadFile(dllFile);
foreach (Type type in assembly.GetTypes())
{
if (type.IsClass && !type.IsAbstract && typeof(IPlugin).IsAssignableFrom(type))
{
IPlugin plugin = (IPlugin)Activator.CreateInstance(type);
Console.WriteLine($"Loaded plugin: {plugin.Name}");
plugin.Execute();
}
}
}
}
}
在这个示例中,我们首先创建了一个插件接口IPlugin
,然后创建了一个实现该接口的插件类MyPlugin
。接着,我们编译插件类,并将其保存到一个单独的目录中。最后,在主程序中,我们使用反射和动态加载技术来加载插件,并执行插件中的Execute
方法。
需要注意的是,这只是一个简单的示例,实际应用中可能需要考虑更多的因素,例如插件的版本控制、插件的配置等等。
领取专属 10元无门槛券
手把手带您无忧上云