博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MEF 编程指南(七):使用目录
阅读量:6319 次
发布时间:2019-06-22

本文共 1675 字,大约阅读时间需要 5 分钟。

目录(Catalogs)

 
MEF 特性编程模型的核心价值,拥有通过目录动态地发现部件的能力。目录允许应用程序轻松地使用那些通过 Export Attribute 注册自身的导出。下面列出 MEF 提供的目录。 
 
 
程序集目录(Assembly Catalog)
 
为了发现给定程序集所有导出,需要使用 [System.ComponentModel.Composition.Hosting.AssemblyCatalog]。
 
var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); 
 
文件目录(Directory Catalog)
 
为了发现目录中所有程序集的所有导出,需要使用 [System.ComponentModel.Composition.Hosting.DirectoryCatalog]。
 
var catalog = new DirectoryCatalog("Extensions"); 
如果使用相对目录,这就相对于当前 AppDomain 的根目录。
DirectoryCatalog 会一次性扫描目录,但是在目录有变动时候不会自动刷新。然而,你可以实现自己的扫描机制,调用 Catalog 的 Refresh() 方法进行扫描。一旦重新扫描(Rescans),重组(Recomposition)就会发生。
 
var catalog = new DirectoryCatalog("Extensions");            // 实现扫描的逻辑            catalog.Refresh();

 

注意:
Silverlight 不支持 
DirectoryCatalog。 
 
 
聚集目录(Aggregate Catalog)
 
 
当程序集目录和文件目录不能独自地满足要求或者是需要合并目录,需要使用 [System.ComponentModel.Composition.Hosting.AggregateCatalog]。AggregateCatalog 组合多个目录到单一的目录。一种常见的模式是:不仅添加当前执行的程序集,而且添加三方扩展的文件目录。你可以传递 Catalogs 集合到 AggregateCatalog 构造器,或者直接添加 Catalogs 集合,例如:catalog.Catalogs.Add(...)
 
var catalog = new AggregateCatalog(                new AssemblyCatalog(Assembly.GetExecutingAssembly()),                new DirectoryCatalog("Extensions")); 
 
类型目录(Type Catalog)
 
为了发现特定类型集合的所有导出,使用 [System.ComponentModel.Composition.Hosting.TypeCatalog]。
 
 
var catalog = new TypeCatalog(typeof(type1), typeof(type2), ...);

 

发布目录(DeploymentCatalog) - 适用于 Silverlight
 
Sliverlight 中的 MEF 包含 DeploymentCatalog 用于动态地下载远程的 XAPs。更多参考   章节。
 
 
为容器(Container)使用目录(Catalog)
 
 
为容器使用目录,简单地把目录传递给容器的构造器。
 
var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());            var container = new CompositionContainer(catalog);

 

原文:

转载于:https://www.cnblogs.com/JavCof/p/3680487.html

你可能感兴趣的文章
6.9. 流量控制
查看>>
199bit总结的影响最大的十个算法
查看>>
Unity中的Path对应各平台中的Path
查看>>
Nuget~管理自己的包包
查看>>
css 设置背景图片铺满固定不动
查看>>
第 8 章 Spring Cloud
查看>>
项目中使用百度地图遇见的问题
查看>>
开发记录_自学Python写爬虫程序爬取csdn个人博客信息
查看>>
使用Android Studio自带的NDK编译JNI
查看>>
web跨域解决方案
查看>>
史上最全的maven的pom.xml文件详解
查看>>
Winform开发框架中工作流模块之申请单草稿处理
查看>>
基础知识:数据类型优先级
查看>>
iOS - OC NSSet 集合
查看>>
一元云购CMS微信分享打不开解决办法
查看>>
大连100公里越野赛_心中的痛
查看>>
7.2. zsh
查看>>
2015年大学生网购消费排行榜
查看>>
Linux基础
查看>>
生产上的部署脚本功能
查看>>