以下是一个使用ASP.NET MVC和MEF(Managed Extensibility Framework)创建可插拔架构的示例:
public interface IPlugin
{
string Name { get; }
void Execute();
}
[Export(typeof(IPlugin))]
public class PluginA : IPlugin
{
public string Name => "Plugin A";
public void Execute()
{
// 插件A的功能实现
}
}
[Export(typeof(IPlugin))]
public class PluginB : IPlugin
{
public string Name => "Plugin B";
public void Execute()
{
// 插件B的功能实现
}
}
[Export]
public class PluginManager
{
[ImportMany]
public IEnumerable Plugins { get; set; }
public void ExecuteAllPlugins()
{
foreach (var plugin in Plugins)
{
plugin.Execute();
}
}
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
var container = new CompositionContainer(new DirectoryCatalog(Server.MapPath("~/Plugins")));
var pluginManager = container.GetExportedValue();
pluginManager.ExecuteAllPlugins();
}
注意:在运行项目之前,确保在“Plugins”文件夹中添加了编译后的插件程序集。