.Net插件框架ManagedExtensibilityFramework简介
Managed Extensibility Framework(MEF)是微软的一个用来扩展.net应用程序的框架,它最初为了满足Visual Studio里的编辑器的需求,比如说,延迟加载所有东西和细粒度协定。随着托管代码慢慢地取代基于COM的扩展模型,MEF框架也逐渐成型。
MEF是在Codeplex上开源的,并且现在已经是.Net 4.0的一部分。我们可以用它非常容易的实现插件框架。一个简单的示例如下(使用时需要添加System.ComponentModel.Composition.dll 的引用):
class Program
{
[Import]
ILogger logger;
void Compose()
{
var catalog = new AssemblyCatalog(this.GetType().Assembly);
var container = new CompositionContainer(catalog);
container.ComposeParts(this);
}
public static void Main(string[] args)
{
var p = new Program();
p.Compose();
p.logger.LogMessage("hello world");
}
}
interface ILogger
{
void LogMessage(string msg);
}
[Export(typeof(ILogger))]
class ConsoleLogger : ILogger
{
public void LogMessage(string msg)
{
Console.WriteLine(DateTime.Now + ": " + msg);
}
}
这个例子比较简单,并不能很好的体现MEF带来的便利,MS官方的一个稍微复杂点的例子SimpleCalculator更合适一些。
不过,从这个例子中也可以看出MEF的基本工作方式:服务方通过ExportAttribute导出可提供的服务,使用者通过ImportAttirbute导入所需要的服务。它们之间彼此隔离而独立,服务对象的创建由MEF框架完成,并能提供单例、延迟加载等特性,而无须我们显式编码实现。
到此这篇关于.Net插件框架Managed Extensibility Framework的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。
相关文章