04 2014 档案

摘要:1.MSDN上的文章:COM Interop教程2.接口的三种类型:IDispatch、IUnknown和Dual3.使用TlbImp来更灵活地自动生成RCW4.托管事件基于委托,而非托管事件(在 COM 中)基于连接点5.可new出RCW对象,也可以使用COM API中的CoCreateInsta... 阅读全文
posted @ 2014-04-27 12:32 jello chen 阅读(307) 评论(0) 推荐(0) 编辑
摘要:1.在在 C# 中通过 P/Invoke 调用Win32 DLL这篇文中,详细介绍了P/Invoke的基本知识以及使用。2.InAttribute和OutAttribute特性与C#中ref和out关键字的不同,注意传递方向的不同。3.P/Invoke Interop Assistant工具的善用。... 阅读全文
posted @ 2014-04-22 22:06 jello chen 阅读(322) 评论(0) 推荐(0) 编辑
摘要:一个MEF容器实例是不可变的。如果catalog支持改变(像观察一个目录的改变)或是如果你的代码在运行时添加或移除部件,改变都可能发生。以前,你不得不作出改变并在组合容器上调用它的组合方法。在Preview 4 版中,我们已经介绍了对Composition Batch的支持。批处理包含了一系列要添加... 阅读全文
posted @ 2014-04-17 22:42 jello chen 阅读(635) 评论(0) 推荐(0) 编辑
摘要:查询组合容器组合容器暴露了几个get exports的重载方法和导出对象和对象集合。你需要注意下面的行为:当请求单个对象实例时,如果未发现导出,一个异常将被抛出当请求单个对象实例时,如果发现超过一个,一个异常将被抛出GetExportedValue方法在下面的代码片段中,我们请求一个Root(契约)... 阅读全文
posted @ 2014-04-17 21:19 jello chen 阅读(859) 评论(1) 推荐(0) 编辑
摘要:一些应用程序被设计成在运行时可以动态改变。例如,一个新的扩展被下载,或者因为其它的多种多样的原因其它的扩展变得不可用。MEF处理这些多样的场景是依赖我们称作重组的功能来实现的,它可已在最初的组合后改变导入的值。导入可以通知MEF它通过[Import]使用Allowrecomposition属性来支持... 阅读全文
posted @ 2014-04-17 13:19 jello chen 阅读(459) 评论(0) 推荐(0) 编辑
摘要:理解MEF容器中部件的生命周期及其含义是非常重要的。鉴于MEF重点在开放端应用程序,这将变得尤其重要的,一旦app ships和第三方扩展开始运行,作为应用程序的开发者将很好地控制这一系列的部件。生命周期可以被解释为这样一个部件期望的共享物,无论是一个新的部件被创建还是一个部件被关闭或释放都由控制策... 阅读全文
posted @ 2014-04-16 23:27 jello chen 阅读(883) 评论(0) 推荐(0) 编辑
摘要:当在使用子容器的时候,基于某些具体标准来过滤目录可能是重要的。例如,基于部件的创建策略来过滤是很常见的。下面的代码片段演示了如何构建这种特别方法:var catalog = new AssemblyCatalog(typeof(Program).Assembly);var parent = new ... 阅读全文
posted @ 2014-04-14 22:14 jello chen 阅读(355) 评论(0) 推荐(0) 编辑
摘要:MEF特性化编程模型的价值主张之一是通过catalogs动态发现部件的能力。Catalogs允许应用程序很容易地消费那些通过[Export]已经自我注册的exports。Assembly Catalog为了在一个特定的程序集中发现所有的exports,可以使用System.ComponentMode... 阅读全文
posted @ 2014-04-13 23:26 jello chen 阅读(525) 评论(0) 推荐(0) 编辑
摘要:在导出声明这一节中解释了部件导出服务和值的基础知识。在某些情况下,出于多种原因,关联与导出相关的信息是有必要的。通常,它被用来解释一个指定的普通契约实现的能力。这对于允许导入约束满足它的导出,或者导入此时所有可用的实现和检查它在使用导出之前在运行时的能力是很有用的。在Export上附加Metadat... 阅读全文
posted @ 2014-04-13 19:53 jello chen 阅读(429) 评论(0) 推荐(0) 编辑
摘要:在一个部件组合中,导入将触发一个部件或者多个部件的实例化,这些部件暴露了所需原请求部件的必要的导入。对于一些应用程序来说,延迟实例化-防止图结构下的递归组合-可能对于将创建一个长久复杂的开销很大而不必要的对象的图来说是一个重要的因素。正是出于这样的动机,MEF支持叫做lazy exports的导出。... 阅读全文
posted @ 2014-04-13 17:21 jello chen 阅读(384) 评论(0) 推荐(0) 编辑
摘要:组合部件使用[System.ComponentModel.Composition.ImportAttribute]特性声明导入。与导出类似,也有几种成员支持,即为字段、属性和构造器参数。同样,我们也来看下该特性类的声明:[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple=false, Inherited=false)]public class ImportAttribute : Attribute, IAttributedIm 阅读全文
posted @ 2014-04-13 15:04 jello chen 阅读(637) 评论(0) 推荐(0) 编辑
摘要:组合部件通过[ExportAttribute]声明exports。在MEF中,有这么几种成员可声明exports的方式:组合部件(类)、字段、属性和方法。我们来看下ExportAttribute类的声明:[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method | AttributeTargets.Class, AllowMultiple=true, Inherited=false)]public class ExportAttribute : Attribute{} 阅读全文
posted @ 2014-04-12 23:20 jello chen 阅读(492) 评论(0) 推荐(0) 编辑
摘要:组合部件在MEF中,一个组合部件就是一个组合单元,组合部件"出口"其它组合部件需要的服务并且从其它部件"进口"需要的服务。在MEF编程模型中,为了声明组合部件的"出口"和"进口",使用的是ExportAttribute和ImportAttribute。一个组合部件至少应该包含一个[Export]。组合部件既可以被显式的添加到Container,也可以通过使用Catalogs来创建。MEF附带的默认的Catalogs是通过[Export]来识别组合部件的。契约组合部件并不直接依赖另一个组合部件,而是依赖一个由字符串标 阅读全文
posted @ 2014-04-12 15:27 jello chen 阅读(442) 评论(0) 推荐(1) 编辑
摘要:在MEF出现以前,其实微软已经发布了一个类似的框架,叫MAF(Managed Add-in Framework),它旨在使应用程序孤立和更好的管理扩展,而MEF更关心的是可发现性、扩展性和轻便性,后者更lightweight。我们将跟随MEF官网来学习。The Managed Extensibility Framework or MEF is a library for creating lightweight, extensible applications. It allows application developers to discover and use extensions wi 阅读全文
posted @ 2014-04-12 12:32 jello chen 阅读(583) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示