若干年前,老周写了几篇有关MEF的烂文,简单地说,MEF是一种动态扩展技术,比如可以指定以某个程序集或某个目录为搜索范围,应用程序在运行时会自动搜索符合条件的类型,并自动完成导入,这样做的好处是,主程序的代码不用改来改去,只需要把扩展的程序集放到对应的目录下就可以了。
MEF不仅可以用于“看不见”的类型扩展上,对于“看得见”的类型照样适用,比如窗口、控件之属,你要是够牛逼的话,甚至可以把它用到ASP.NET上,不过这个玩意儿估计要配合重写路由规则才能实现,根据URL传的参数来跳转到具体的页面。
较为简单的,像Windows Forms中的窗口,WPF中的窗口或控件,就可以直接运用MEF来完成扩展,主应用程序界面可以动态生成菜单项或按钮来打开窗口就可以了。而各个窗口的实现代码可以写在一个类库项目中。
下面,咱们用一个实实在在的例子来说明一下。
新建一个类库项目,然后在里面做三个WPF窗口,XAML文档如何与代码类关联,这个不要问我,问MSDN姐姐去。

因为这是做测试,窗口的UI布局你可以随便设计。
给大家一
