可组合部件(Composable Parts)   在 MEF 内部可组合部件是一个可组合单元.可组合部件导出其他可组合部件需要的服务,并且从其他可组合部件导入服务.在 MEF 编程模型中,可组合部件用 [System.ComponentModel.Composition.Import] 和 [System.ComponentModel.Composition.Export] 特性标识,以便声明导出点和导入点.可组合部件应该包含至少一个导出点.可组合部件要么显式添加到容器或者通过使用目录创建.M…
组合部件 在MEF中,一个组合部件就是一个组合单元,组合部件"出口"其它组合部件需要的服务并且从其它部件"进口"需要的服务.在MEF编程模型中,为了声明组合部件的"出口"和"进口",使用的是ExportAttribute和ImportAttribute.一个组合部件至少应该包含一个[Export].组合部件既可以被显式的添加到Container,也可以通过使用Catalogs来创建.MEF附带的默认的Catalogs是通过[E…
在应用程序中托管(Hosing) MEF 涉及到创建组合容器(CompositionContainer) 实例,添加可组合部件(Composable Parts),包括应用程序宿主(Host)本身并进行组合(Composing).   下面是托管涉及的步骤.   1.创建宿主(Host)类.下面的例子我们使用控制台应用程序,宿主(Host)类即 Program 类. 2.添加 System.ComponentModel.Composition 程序集引用. 3.添加以下 using 语句:usi…
MEF 容器实例并非不可变的.如果目录支持改变(像监控目录变动)或者在运行时添加/移除部件都可能发生改变.以前,你不得不做出改动并且调用 CompositionContainer 上的 Compose 方法.在 Preview 4 release上,我们已经介绍对批量组合的支持.   批处理包含一系列添加或移除的部件.在执行更改之后,容器自动地触发一次更新重组导入导致的变化的组合. 设想一个设置窗口的场景,用户选中或者取消选中一个选项.那些会映射当前的部件或者不在容器中的部件.请求批处理,你将会…
理解 MEF 容器部件生命周期和实现是非常重要的事情.考虑到 MEF 关注可扩展应用程序.这变得尤为重要.生命期可以解释为期望部件的共享性(transitively, its exports)   共享,非共享与所有权(Share,Non Shared and ownership)   部件的共享性(Shareability)是通过使用 PartCreationPolicyAttribute 定义的.PartCreationPolicyAttribute 提供以下几种值:   Shared:部件…
分类: sql编程:标准的sql 编程 * 纯sql 在标准的编程中又分为 sqlserver-->T-sql oracle-->pl-sql(扩展) 变量:在使用变量之前先定义 声明变量 sql 格式: declare 变量名 数据类型变量的分类:局部变量 全部变量局部变量:由程序员定义在一个程序内部使用的所有的局部变量名都必须以@符最为前缀//例子declare @num nvarchar(5) 一个 declare 可以定义多个变量 用,隔开2.为变量赋值=变量值a.set 变量名这次赋…
当使用子容器的时候,基于特定的标准(Specific Criteria)过滤目录是很必要的.比如,基于部件构造策略的过滤器是很常见的.下面的代码片段演示了如何构建的特殊途径(Particular Approach):   var catalog = new AssemblyCatalog(typeof(Program).Assembly); var parent = new CompositionContainer(catalog); var filteredCat = new Filtered…
目录(Catalogs)   MEF 特性编程模型的核心价值,拥有通过目录动态地发现部件的能力.目录允许应用程序轻松地使用那些通过 Export Attribute 注册自身的导出.下面列出 MEF 提供的目录.      程序集目录(Assembly Catalog)   为了发现给定程序集所有导出,需要使用 [System.ComponentModel.Composition.Hosting.AssemblyCatalog].   var catalog = new AssemblyCata…
声明导出解释了部件导出服务的基础知识和价值观(Values).有时候出于种种原因,导出关联信息是非常必要的.通常,用于解释关于功能公共契约的具体实现.允许导入满足约束要求的导出,或者导入所有可用的实现并且在导出前在运行时检查他们的功能.   为导出附加元数据(Attaching Metadata to an Export)   考虑到 IMessageSender 服务更早引入.假设我们有一些实现,和相关的消费者实现(Consumer Of The Implementations)有差异.对于我…
组合部件通过 [System.ComponentModel.Composition.ImportAttribute] 特性声明导入.类似于导出,也有几种不同的方法声明导入,即通过:字段(Fields).属性(Properties)和构造器参数(Constructor Parameters).     属性导入(Property Imports)     为了向属性导入值,使用 [System.ComponentModel.Composion.ImportAttribute] 特性标识.如下例中导…