- 浏览: 649480 次
- 性别:
- 来自: 石家庄
文章分类
最新评论
-
abao1:
老贾 在安装IDEA的过程中,在激活步骤时,按如下操作即可: ...
IntelliJ IDEA 2016注册方法和注册码 -
bo_hai:
./usr/bin/java: symbol lookup ...
jmagick安装步骤 -
wxcking:
不错的, 收藏一下
JAVA使用POI生成Excel文件 -
zgyfh:
大哥,密码是多少啊?zgyfh@tom.com谢谢了!新手学习 ...
WPF做的必备示例 -
记忆无泪:
jiasongmao 写道你的邮箱是多少,我可以发源代码到邮箱 ...
WPF做的必备示例
本系列文章非原创,转载自:
作 者:Beniao
文章出处:http://beniao.cnblogs.com/ 或 http://www.cnblogs.com/
在应用程序中宿主MEF其实非常简单,只需要创建一个组合容器对象(CompositionContainer)的实例,然后将需要组合的部件 (Parts)和当前宿主程序添加到容器中即可。首先需要添加MEF框架的引用,既
System.ComponentModel.Composition.dll,详细如下代码块: private void Compose() { var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); var container = new CompositionContainer(catalog); container.ComposeParts(this); }
通过上面的代码实现就可以完成MEF的宿主,实际上在使用MEF的开发过程中并不会如此简单的应用。可能会定义一个或多个导入(Import) 和导出(Export)部件,然后通过MEF容器进行组合,其实也可以理解为“依赖注入”的一种实现。比如定义一个图书接口和一个接口的实现类,在此基础 上使用MEF的导入导出特性:
<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->
public interface IBookService { void GetBookName(); } /// <summary> /// 导入 /// </summary> [Export(typeof(IBookService))] public class ComputerBookService : IBookService { public void GetBookName() { Console.WriteLine("《Hello Silverlight》"); } }
如上代码通过使用MEF的[System.ComponentModel.Composition.Export]对接口的实现进行导出设置, 让接口的实现以容器部件的方式存在,然后通过组合容器进行装配加载,这个过程中就包括了接口的实例化的过程。接下来就需要在MEF的宿主程序中定义一个接 口的属性,并为其标注[System.ComponentModel.Composition.Import]特性以实现接口实现类的导入。如下代码块:
<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->
/// <summary> /// 导入接口的实现部件(Part) /// </summary> [Import] public IBookService Service { get; set; }
完成了导入导出的接口与实现的开发及特性配置,下面就剩下一步组合了,也就是本文提到的将部件和宿主程序自身添加到组合容器中,以实现导入(Import)和导出(Export)的组合装配。
<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->
/// <summary> /// 宿主MEF并组合部件 /// </summary> private void Compose() { var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); var container = new CompositionContainer(catalog); //将部件(part)和宿主程序添加到组合容器 container.ComposeParts(this,new ComputerBookService()); }
通过以上步骤就完成了MEF的宿主以及一个简单的部件组合的应用示例,下面是本文的完整代码示例:
<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel.Composition; using System.ComponentModel.Composition.Hosting; using System.Reflection; namespace HostingMef { public interface IBookService { void GetBookName(); } /// <summary> /// 导入 /// </summary> [Export(typeof(IBookService))] public class ComputerBookService : IBookService { public void GetBookName() { Console.WriteLine("《Hello Silverlight》"); } } class Program { /// <summary> /// 导入接口的实现部件(Part) /// </summary> [Import] public IBookService Service { get; set; } /// <summary> /// 宿主MEF并组合部件 /// </summary> private void Compose() { var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); var container = new CompositionContainer(catalog); //将部件(part)和宿主程序添加到组合容器 container.ComposeParts(this,new ComputerBookService()); } static void Main(string[] args) { Program p = new Program(); p.Compose(); p.Service.GetBookName(); } } }
发表评论
-
silvelright酷站
2011-03-22 18:47 775http://completit.com/# -
silverlight翻转代码
2011-03-13 18:46 1074using System; using System.Net ... -
silverlight独立存储示例
2011-03-07 17:17 1020void CreateDir(string dirNam ... -
silverlight SDK和toolit中控件英文如何转换为英文
2010-11-11 15:50 962解决方法: 设置 ... -
Silverlight4:网络地图服务
2010-10-16 11:01 1531Bing Maps与Google Earth一样 ... -
通过JS创建silverlight对象
2010-10-12 13:04 1603前言: 对于我们开发的silverlight应用来讲,有的时 ... -
silverlight childwindow源码
2010-09-18 21:17 1938<!-- // (c) Copyright Micro ... -
精彩的 Silverlight 开源项目
2010-08-18 14:32 2892Silverlight 物理模型 http://www.c ... -
MEF程序设计指南五:迟延(Lazy)加载导出部件(Export Part)与元数据(Metadata)
2010-08-12 10:34 899本文章非原创,转载自: 作 者:Beniao 文 ... -
MEF程序设计指南四:使用MEF声明导出(Exports)与导入(Imports)
2010-08-12 10:03 571本文章非原创,转载自: 作 者:Beniao 文 ... -
MEF程序设计指南三:MEF中组合部件(Composable Parts)与契约(Contracts)的基本应用
2010-08-12 09:52 509本文章非原创,转载自: 作 者:Beniao 文 ... -
MEF程序设计指南二:Silverlight中使用CompositionInitializer宿主MEF
2010-08-12 09:24 824本系列文章非原创,转载自: 作 者:Beniao ... -
silverlight应用程序库缓存
2010-08-10 14:22 1469应用程序库缓存可在用户重新访问网站时帮助改善启动性能。 ... -
Prism动态模块加载
2010-08-10 10:27 1554这篇介绍模块在silverlight的特殊应用. sil ... -
Silverlight中Json数据的转换方法(中文)
2010-08-04 11:36 1209[DataContract] public clas ... -
silverlight万花筒效果
2010-07-28 16:14 835见附件。 -
silverlight如何将颜色字符串转换为颜色
2010-07-02 10:42 1502public class ColorUtil { ... -
silverlight中Tab转Enter的实现方法
2010-06-04 17:38 1696silverlight项目中要求界面全键盘操作,并且在光标移动 ... -
在两个Silverlight应用间数据通信(包括与Flash通信)
2010-05-13 17:06 974声明:该博文转载自:http://daizhj.blog.51 ... -
silverlight和js相互调用
2010-05-13 16:56 1633步骤一:在silverlight后台代码类中声明被js调用的方 ...
相关推荐
在WPF中MEF的应用,有简单实例和代码,MEF是主程序
MEF框架在Silverlight中应用,MEF是微软的插件解决方案。
MEF(Managed Extensibility Framework)简单实现
引导程序 MEF Autofac应用程序引导程序
Mef demoMef demo
MEF 让扩展不仅可在应用程序内重复使用,还可以跨程序重复使用。传统的 C/S 端开发,如果项目不是特别复杂,常规的开发模式还是可以应对的。但是一旦场景复杂度提升,一个小小业务功能的修改就需要更新整个客户端,...
一个简单的 Silverlight 4 应用程序(MEF+ MVVM+ WCF RIA Services)配套源代码及安装文件 本文是Weidong Shen先生在CodeProject上的文章源代码
MEF在AppDomain中演示在AppDomain中使用MEF并允许在应用程序运行时交换MEF零件。 这是我有关此主题的博客条目的源代码:和文章:
MEF框架源代码 MEF框架源代码 MEF框架源代码
这是目前metro ethernet 技术最权威的标准met,该文档是mef10.2
MEF白皮书中文版 .NET框架4.0 版本包括了支持面向组件编程的类。 这些称为组合基元的最底层的类代表了: ● 具有相互组合能力的组件; ● 支持丰富元数据的组件定义; ● 面向组件库的通用查询接口。 在...
MEF实例,MEF实例,MEF实例,MEF实例,MEF实例,MEF实例,MEF实例
使用MEF能够使静态编译的.NET应用程序转换为动态组合,这将是创建可扩展应用、可扩展框架和应用扩展的好途径。它将做为.NET Framework 4.0的组成部分之一发布。现在,这个框架在.NET3.5中也可以运行。
这个代码介绍了mef与wcf整合的一个基础方案,通过mef实现动态和模块化管理wcf的一个基础实现思路。
MEF入门,适合架构师和设计师学习,不错的资料
托管扩展性框架(Managed Extensibility Framework,简称MEF),是微软.NET框架下为提高应用和组件复用...使用MEF能够使静态编译的.NET应用程序转换为动态组合,这将是创建可扩展应用、可扩展框架和应用扩展的好途径。
使用MEF构建可扩展的Silverlight应用程序,这个Demo实现了一个可多重扩展的运算器,可以动态下载包,也可以静态导入。可以作为很好的MEF入门示例吧。
在wpf中使用MEF构建插件的一个demo。
WPF prism MEF 架构
这段代码是一个MEF的小例子,适合入门看,老手请绕道。C#写的。