MEF(Managed Extensibility Framework)是微软推出的用于开发基于插件程序的应用框架,网址为CodePlex MEF Site.在园子里有不少文章,可能是鄙人水平有限,虽然懵懂,但是如何实现即插即用的应用程序还是很模糊,终于在http://www.codeproject.com/KB/silverlight/SilverlightMEFGuidePart1.aspx看到了这位印度兄的文章,图文并茂,很容易理解,在此把自己的开发过程写下来备忘。
一,运行环境:vs2010,.net framework4.0
二,示例工程包括下图,
CommonInterface工程定义部件的公共接口,
CustomPerson和EmployPerson为部件工程,分别引用CommonInterface类库,实现公共接口,
Demo工程为主程序。
三:部件接口定义:
四:实现接口,用Export(typeof(IPerson))标示该类可导出
五:
1,定义导入部件
[ImportMany(typeof(Iperson))]
public IPerson[] Service{get;set;}
2,定义部件目录:
var catalog=new DirectoryCatalog(@”.\”);
3,创建宿主容器;
var container=new CompositionContainer(catalog);
4,拼装部件:
container.ComposeParts(this);
5,调用接口方法:
foreach(var aa in p.Service)
{
aa.show();
}
完整代码如下: