摘要:
前言上一篇文章具体介绍到了如何在Silverlight中使用MEF,为了使SL扩展控件能够组合成功,我们在MEFDemo_SL中添加了对项目MEFDemo_SL.Extensons的引用,并在MainPage中using了扩展控件的命名空间。这看似有点不合逻辑,的确,这么做怎么都觉得很怪异,组件应该能够被动态发现。本篇文章就介绍一下如何动态加载dll。动态加载动态发现并加载silverlight的dll,需要先使用webclient将dll下载到客户端,再使用MEF进行组合。我们对上一篇文章的例子进行简单的修改:1.在MEFDemo_SL.Web中新建文件夹Parts,将MEFDemo_SL. 阅读全文
随笔档案-2011年12月
我学MEF系列(6):在Silverlight中应用MEF
2011-12-20 20:35 by ps_zw, 1846 阅读, 收藏,
摘要:
前言 通过前面MEF的基础知识的学习,我们已经知道MEF可以在控制台程序中寄宿。MEF还可以在Winform,Silverlight,WPF等应用程序中使用。在接下来的几篇文章中我们就重点介绍MEF是如何在这些应用程序中使用的。本文通过一个例子介绍MEF在Silverlight中的简单应用。正文第一步:打开VS2010新建一个Silverlight应用程序,命名为"MEFDemo_SL"。一路默认最后Solution的结构如下:在MainPage的设计器中添加一个容器控件,我们在这里添加一个TabControl(Name设置为"tcContainer") 阅读全文
我学MEF系列(5):创建策略(Creation Policy )和生命周期(Life Cycle)
2011-12-14 23:32 by ps_zw, 3618 阅读, 收藏,
摘要:
前言在前面的介绍中我们已经知道:导入和导出的匹配成功需要ContractType,ContractName,Metadata都匹配,这里我们还要介绍一个新的东西:创建策略(creation policy )。有时候我们在容器中的实例在每一个导入之间共享,即单例;有时候我们需要让每一个导入都拥有一个各自的实例,这在MEF中就是有创建策略决定的。生命周期(Life Cycle),每一个MEF的部件在容器中都有自己的生命周期,何时创建,何时释放等。本文就主要介绍一下MEF中得创建策略和生命周期创建策略 创建策略,其实就是组合容器决定如何创建部件。在组合容器组合部件时,如果导入和导出匹配成功,则组合容 阅读全文
我学MEF系列(4):组合容器(CompositionContainer)和目录(Catalog)
2011-12-12 00:12 by ps_zw, 6761 阅读, 收藏,
摘要:
前言 通过之前的文章,我们已经了解了MEF中的导入(Import)和导出(Export)。在本系列的第一篇文章中我们知道MEF其实还包括另外两个核心内容:组合容器(CompositionContainer)和目录(Catalog)。组合容器 Castle有容器,Unity有容器,同样作为一个能够提供扩展机制,能够支持依赖注入的框架肯定也有容器。MEF的组合模型的核心是组合容器,该容器包含所有可用的部件并执行组合操作 (即,将导入和导出配对)。通常我们使用的组合容器是:CompositionContainer ,MEF还提供一个组合对象:CompositionBatch。目录 前面我们有谈... 阅读全文
我学MEF系列(3):导入(Import)和导出(Export) (续)
2011-12-09 23:21 by ps_zw, 3233 阅读, 收藏,
摘要:
前言:在上一篇中,我们简单的介绍了导入和导出的基本知识以及一些基本用法,本篇将介绍一下在导出中经常使用的到两种技巧(其实就是MEF提供的两种特性):元数据(Metadata)和自定义导出(Custom Export)元数据 在MEF中,导出可提供自身的一些附加信息,我们称之为“元数据”。可通过元数据将导出的一些信息、属性传递给导入。上一篇介绍导入的时候提到了ImportMany,在ImportMany的时候有时候可能需要根据特定的条件过滤一些匹配的导出,这时我们可以利用导出的元数据作依据。此外,由于导入部件可以使用元数据来决定要使用哪些导出,或收集有关导出的信息而不必构造导出。 因此,导入必. 阅读全文
我学MEF系列(2):导入(Import)和导出(Export)
2011-12-04 23:20 by ps_zw, 4123 阅读, 收藏,
摘要:
前言:MEF不同于其他IOC容器(如:Castle)很重要的原因在于它使用了特性化编程模型,何为特性化编程这里不细究,简单说明下两个概念:“特性”和“编程模型”: 特性(Attribute):举例来说就是我们在开发过程中在类上标记的如:[Serializable]的标签。 编程模型(Programming Model):MEF中的编程模型是定义 MEF 所操作的概念性对象集的特定方法。MEF默认使用特性化编程模型,但是用户也可自定义编程模型。 导入(Import),导出(Export)是MEF扩展性机制实现的基础,是非常重要的两种部件。MEF中导入、导出部件均是通过特性来确定的(如:标记... 阅读全文
浙公网安备 33010602011771号