介绍了下MEF的基础用法,让我们对MEF有了一个抽象的认识。当然MEF的用法可能不限于此,比如MEF的目录服务、目录筛选、重组部件等高级应用在这里就不做过多讲解,因为博主觉得这些用法只有在某些特定的环境下面才会用到,着实不太普遍,感觉没有钻下去的必要。如果你有兴趣也可以去了解下。这篇打算将MEF和仓 ...
分类:
其他好文 时间:
2016-06-18 01:18:51
阅读次数:
125
namespaceMEFDemo{classProgram{privateCompositionContainer_container;[ImportMany(typeof(ICalculator))]IEnumerable<Lazy<ICalculator>>calculators;publicProgram(){varcatalog=newAssemblyCatalog(typeof(Program).Assembly);_container=newCompositionConta..
分类:
其他好文 时间:
2016-06-14 19:52:43
阅读次数:
243
在文章开始之前,首先简单介绍一下什么是MEF,MEF,全称Managed Extensibility Framework(托管可扩展框架)。单从名字我们不难发现:MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF有这样一段说明: Managed Extensibility Framework ...
好久没有写博客了,今天抽空继续写MEF系列的文章。有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后。 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用的基本已经讲完了,相信大家已经能看出MEF所带来的便利了。今天就介绍一些MEF中一些较为不常用的东西 ...
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻。如果没有看过前面的文章,请到我的博客首页查看。 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要采用分层架构,就拿最简单的三层架构来说吧,我们通常把业务逻辑写在DLL中,现在就来写一个例子,看看如 ...
前面说完了导入和导出的几种方法,如果大家细心的话会注意到前面我们导出的都是类,那么方法和属性能不能导出呢???答案是肯定的,下面就来说下MEF是如何导出方法和属性的。 还是前面的代码,第二篇中已经提供了下载链接,大家可以下载学习。 首先来说导出属性,因为这个比较简单,和导出类差不多,先来看看代码,主 ...
上一篇学习完了MEF的基础知识,编写了一个简单的DEMO,接下来接着上篇的内容继续学习,如果没有看过上一篇的内容, 下面我们来主要讲解一下MEF中的导入和导出,还是上一篇的代码(这篇中,我还会贴出完整的代码),修改Program的代码如下: using System; using System.Co ...
上一篇我们已经获得了制定类型的实例,但我们还无法对其进行有效的控制。 我们用ExportMetadata属性可以对具体的某个实例做标记,相当于命名。这么理解不知道对否。 在IPart项目中添加一个接口IPatMetadata 在导出的地方添加具体的导出元数据ExportMetadata,以txtFi ...
分类:
其他好文 时间:
2016-05-29 22:51:40
阅读次数:
140
在上一篇文章中,我们已经学到了很基本的MEF概念和使用方法。 但我们导出的是一个object类型的实例,只能用来tostring,没有引用部件类库,也不能用里面的成员方法。 本篇,我们逐渐往简单的文件管理器的目标靠拢。 新建类库IPart,添加一个接口IFileHandler.cs Parts类库和 ...
分类:
其他好文 时间:
2016-05-29 22:49:29
阅读次数:
212
起因:工作需要针对不同类型的文件做不同的处理。打个比方,txt文件,直接打印,doc文件,直接发email,jpg文件,上传xxx相册站点。 其实这个问题在学习最基本的工厂模式的时候早已经解决了,稍有点面向对象基础的,都可以写出这样一个文件管理器。再有新类型文件处理的时候,只需要在加一个实现类,再在 ...
分类:
其他好文 时间:
2016-05-29 21:20:11
阅读次数:
241