MEF
SchenkKim
这个作者很懒,什么都没留下…
展开
-
MEF概念简介及在Silverlight中的使用DEMO
MEF: Managed Extensibility Framework 可以很容的构造可扩展性的应用程序。MEF提供了发现和组合能力,因此你可以选择来加载插件。MEF解决了什么问题?- MEF赠送了一种简单的在运行时扩展问题。直到现在,任何程序想支持插件模式,需要构建自己的构架。这些插件经常是特定应用的并且不能被多种实现重用的。- MEF提供了一个标准方式来让程序暴露自己,消耗外部扩原创 2013-08-20 15:13:48 · 1128 阅读 · 0 评论 -
MEF学习系列(1) MEF是什么
前言: 一种新技术,一个新框架的出现并不是偶然的,它们都是为了解决一定的实际问题。如今IT各种技术、框架的更新很迅速,一步留神就感觉自己out了,当然,技术没有优劣好坏之分,能更好的解决实际问题我们就使用它。MEF也是一样,它能解决很多的现实问题,当然它也有它的局限性。现实问题: 在开发大型应用程序,特别是客户端程序,我们会把各个独立的模块/功能包装成一个个小的组件转载 2013-08-21 16:04:26 · 5707 阅读 · 1 评论 -
MEF学习系列(2): 导入(Import)和导出(Export)
前言:MEF不同于其他IOC容器(如:Castle)很重要的原因在于它使用了特性化编程模型,何为特性化变成模型,简单索命两个概念:“特性”和“编程模型”特性(Attribute):举例来说就是我们在开发过程中在类上标记的如:[Serializable]的标签。编程模型(Programming Model):MEF中的编程模型是定义MEF所操作的概念性对象集的特定方法。MEF默认使用特性转载 2013-08-21 16:58:09 · 2546 阅读 · 0 评论 -
MEF学习系列(3): 导入(Import)和导出(Export)之 元数据(Metadata)和自定义导出(Custom Export)
前言在上一篇中,我们简单的介绍了导入好导出的基础知识以及一些基本用法,本篇将介绍一下在导出中经常使用到的两种技巧(其实就是MEF提供的两种特性):元数据(Metadata)和自定义导出(Custom Export)。元数据在MEF中,导出可提供自身的一些附加信息,我们称之为“元数据”。可通过元数据将导出的一些信息、属性传递转载 2013-08-22 14:28:55 · 3131 阅读 · 0 评论 -
MEF学习系列(4): 组合容器(CompositionContainer)和目录(Catalog)
前言通过之前的文章,我们已经了解了MEF中的导入(Import)和导出(Export)。在本系列的第一篇文章中我们知道MEF其实还包括另外两个核心内容:组合容器(CompositionContainer)和目录(Catalog)。组合容器Castle有容器,Unity有容器,同样作为一个能够提供扩展机制,能够支持依赖注入的框架肯定也有容器。MEF的组合模型的核心是组合容器,该容器包含所转载 2013-08-22 15:26:28 · 2943 阅读 · 0 评论 -
MEF学习系列(5): 创建策略(Creation Policy)和生命周期(Life Cycle)
前言在前面的介绍中我们已经知道:导入和导出的匹配需要ContractType,ContractName,Metadata都匹配,这里我们还要介绍一个新东西:创建策略(Creation Policy)。有时候我们在容器中的实例在每一个导入之间共享,即单例;有时候我们需要让每一个导入都拥有一个各自的实例,这在MEF中就是由创建策略决定的。声明周期(Life Cycle),每一个MEF的部件在容原创 2013-08-22 17:01:57 · 1942 阅读 · 0 评论 -
MEF学习系列(6): 在Silverlight中应用MEF
前言通过前面MEF的基础知识的学习,我们已经知道MEF可以在控制台程序中寄宿。MEF还可以在Winform,Silverlight,WPF等应用程序中使用。在接下里的几篇文章中我们就重点介绍MEF是如何在这些应用程序中使用的。本文通过一个例子介绍MEF在Silverlight中的简单应用。正文第一步:打开VS新建一个Silverlight应用程序,命名为MEFDemo_SL。一路默认。转载 2013-08-23 16:22:47 · 911 阅读 · 0 评论 -
MEF学习系列(7): 动态装配Silverlight组件
前言上一篇文章具体介绍到了如何在Silverlight中使用MEF,为了使SL控件扩展能够组合成功,我们在MEFDemo_SL中添加了对项目MEFDemo_SL.Extension的引用,并在MainPage中using了扩展控件的命名空间。这看似有点不合逻辑,的确,这么做怎么都觉得很怪异,组件应该能够被动态发现。本篇文章介绍一下如何动态加载dll。动态加载动态发现并加载Silverl转载 2013-08-26 10:56:34 · 1246 阅读 · 0 评论