在C#中,通過反射可以實現插件系統。以下是一個簡單的示例:
1. 首先,定義一個接口,所有插件都需要實現這個接口:
public interface IPlugin
{
void Execute();
}
2. 創建一個插件類,實現上述接口:
public class MyPlugin : IPlugin
{
public void Execute()
{
Console.WriteLine("MyPlugin is executing.");
}
}
3. 使用反射加載并執行插件:
using System;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
// 假設插件的DLL文件名為"Plugins.dll",并且包含一個名為"MyPlugin"的類
string pluginAssemblyPath = "Plugins.dll";
string pluginTypeName = "MyPlugin";
// 加載插件程序集
Assembly pluginAssembly = Assembly.LoadFrom(pluginAssemblyPath);
// 獲取插件類型
Type pluginType = pluginAssembly.GetType(pluginTypeName);
// 創建插件實例
IPlugin pluginInstance = (IPlugin)Activator.CreateInstance(pluginType);
// 執行插件方法
pluginInstance.Execute();
}
}
在這個示例中,我們首先定義了一個IPlugin
接口,然后創建了一個實現了該接口的MyPlugin
類。接著,我們使用反射加載了名為"Plugins.dll"的程序集,并通過程序集獲取了名為"MyPlugin"的類型。最后,我們創建了一個插件實例并調用了其Execute
方法。