- 浏览: 648918 次
- 性别:
- 来自: 石家庄
文章分类
最新评论
-
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中,使用[System.ComponentModel.Composition.ExportAttribute]支持多种级别的导出部 件配置,包括类、字段、属性以及方法级别的导出部件,通过查看ExportAttribute的源代码就知道ExportAttribute被定义为 Attribute,并为其设置了使用范围。
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method, AllowMultiple = true, Inherited = false)] public class ExportAttribute : Attribute { //...... }
当任何一个类对象或是其内部的字段、属性、方法需要作为可组合部件的时候,就可以使用[ExportAttribute]将其标注为可导出部 件。比如需要将一个对象做为可组合部件进行导出(就是类级别的导出),只需要在类上添加[ExportAttribute]就行了,详细的应用可参考《MEF中组合部件(Composable Parts)与契约(Contracts)的基本应用 》,下面为演示代码:
[System.ComponentModel.Composition.Export] public class DBLogger { }
对于字段、属性级别的导出同类是一样的,通样使用[ExportAttribute]进行标注,下面代码块演示了一个完整的属性导入与导出的示例。
namespace MEFTraining.ExmprtImport { public partial class MainPage : UserControl { [Import("Name")] public string BookName { get; set; } public MainPage() { InitializeComponent(); CompositionInitializer.SatisfyImports(this); MessageBox.Show(BookName); } } public class BookService { [Export("Name")] public string BookName { get { return "《MEF程序设计指南》"; } } } }
方法级的导入与导出主要是利用委托实现,既Action或Action<T>,其使用也是非常简单的,无论是方法所需的参数还是返 回值,都可以通过匿名委托去实现。如下代码中定义了一个BookService类,里面通过MEF导出了PrintBookName方法,且带有一个字符 串类型参数,此时就可以通过匿名委托进行形参的和方法的导出。
public class BookService { [Export(typeof(Action<string>))] public void PrintBookName(string name) { Console.WriteLine(name); } }
在需要使用到此方法的地方,只需要通过匿名委托的方法对该方法进行导入就可以了,下面的代码是对上面的导出方法的调用示例。
public partial class MethodExportImport : UserControl { [Import(typeof(Action<string>))] public Action<string> PrintBookName { get; set; } public MethodExportImport() { InitializeComponent(); CompositionInitializer.SatisfyImports(this); PrintBookName("《MEF程序设计指南》"); } }
另外,MEF也支持继承的导入与导出应用,使用 [System.ComponentModel.Composition.InheritedExportAttribute]实现基于继承的导出,其他 的和字段、属性、方法级的应用完全一致,下面的代码演示了基于继承的导出与导出应用。
namespace MEFTraining.ExmprtImport { public partial class InheritedExportImport : UserControl { [Import] public IUserServie UService { get; set; } public InheritedExportImport() { InitializeComponent(); CompositionInitializer.SatisfyImports(this); string name = UService.GetUserName(); } } [InheritedExport] public interface IUserServie { string GetUserName(); } public class UserService : IUserServie { public string GetUserName() { return "张三"; } } }
MEF还支持构造方法参数的导入,详细这里就不介绍了,有兴趣的可直接查询MEF英文版程序设计指南介绍。
发表评论
-
silvelright酷站
2011-03-22 18:47 775http://completit.com/# -
silverlight翻转代码
2011-03-13 18:46 1073using System; using System.Net ... -
silverlight独立存储示例
2011-03-07 17:17 1019void CreateDir(string dirNam ... -
silverlight SDK和toolit中控件英文如何转换为英文
2010-11-11 15:50 959解决方法: 设置 ... -
Silverlight4:网络地图服务
2010-10-16 11:01 1530Bing Maps与Google Earth一样 ... -
通过JS创建silverlight对象
2010-10-12 13:04 1599前言: 对于我们开发的silverlight应用来讲,有的时 ... -
silverlight childwindow源码
2010-09-18 21:17 1936<!-- // (c) Copyright Micro ... -
精彩的 Silverlight 开源项目
2010-08-18 14:32 2890Silverlight 物理模型 http://www.c ... -
MEF程序设计指南五:迟延(Lazy)加载导出部件(Export Part)与元数据(Metadata)
2010-08-12 10:34 898本文章非原创,转载自: 作 者:Beniao 文 ... -
MEF程序设计指南三:MEF中组合部件(Composable Parts)与契约(Contracts)的基本应用
2010-08-12 09:52 507本文章非原创,转载自: 作 者:Beniao 文 ... -
MEF程序设计指南二:Silverlight中使用CompositionInitializer宿主MEF
2010-08-12 09:24 823本系列文章非原创,转载自: 作 者:Beniao ... -
MEF程序设计指南一:在应用程序中宿主MEF
2010-08-12 09:17 986本系列文章非原创,转 ... -
silverlight应用程序库缓存
2010-08-10 14:22 1468应用程序库缓存可在用户重新访问网站时帮助改善启动性能。 ... -
Prism动态模块加载
2010-08-10 10:27 1548这篇介绍模块在silverlight的特殊应用. sil ... -
Silverlight中Json数据的转换方法(中文)
2010-08-04 11:36 1207[DataContract] public clas ... -
silverlight万花筒效果
2010-07-28 16:14 834见附件。 -
silverlight如何将颜色字符串转换为颜色
2010-07-02 10:42 1502public class ColorUtil { ... -
silverlight中Tab转Enter的实现方法
2010-06-04 17:38 1695silverlight项目中要求界面全键盘操作,并且在光标移动 ... -
在两个Silverlight应用间数据通信(包括与Flash通信)
2010-05-13 17:06 973声明:该博文转载自:http://daizhj.blog.51 ... -
silverlight和js相互调用
2010-05-13 16:56 1629步骤一:在silverlight后台代码类中声明被js调用的方 ...
相关推荐
通过DEMO演示了在WPF中如何使用MEF导入用户控件及接口服务等。
WPF下使用MEF导入带参数构造函数的用户控件
MEF实例,MEF实例,MEF实例,MEF实例,MEF实例,MEF实例,MEF实例
Mef demoMef demo
这个代码介绍了mef与wcf整合的一个基础方案,通过mef实现动态和模块化管理wcf的一个基础实现思路。
MEF框架源代码 MEF框架源代码 MEF框架源代码
使用Caliburn.Micro实现MEF插件化开发,根据dll插件目录动态加载程序集和主程序的Tab页。
这是目前metro ethernet 技术最权威的标准met,该文档是mef10.2
项目演示了如何基于 MEF 框架在 Prism 4 中使用。
在wpf中使用MEF构建插件的一个demo。
vs-mef, Visual Studio 使用的托管扩展性框架( MEF ) 实现 ( 管理扩展性框架工作室的视觉风格) 特性一个新的,更快的主机,为你现有的MEF部件重用已经使用的MEF属性ExportFactory<T> 支持创建具有作用域生命周期的子...
在wpf中使用mvvmlight实现插件
MEF入门,适合架构师和设计师学习,不错的资料
MEF 让扩展不仅可在应用程序内重复使用,还可以跨程序重复使用。传统的 C/S 端开发,如果项目不是特别复杂,常规的开发模式还是可以应对的。但是一旦场景复杂度提升,一个小小业务功能的修改就需要更新整个客户端,...
matlab解压代码MEF 2.1、3.0 EEGLAB 插件 MEF_import (Ver 1.17) 介绍 MEF_import是一个 EEGLAB 插件,它将以多尺度电生理学格式(或 Mayo EEG 文件,MEF,见下文)和多尺度注释文件 (MAF) 数据压缩的数据导入到 . ...
在WPF中MEF的应用,有简单实例和代码,MEF是主程序
WPF prism MEF 架构
插件式开发,MEF结合MVVMLight的简单应用。供大家参考
MEF14,以太网交换机设备MEF认证必须
MEF9,认证测试规范,交换设备MEF认证必须.