本文不说MEF的元数据怎么用,只说MEF的自定义元数据为什么这么设计。

    [MyMetaData("Android")][MyMetaData("IOS")][Export(typeof(IMyInterface))][其他自定义的Attribute]public class MyClass:IMyInterface{//...}[MetadataAttribute][AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Interface, AllowMultiple = true, Inherited = false)]public  class MyMetaDataAttribute : ExportAttribute{public string Data { get; set; }public MyMetaDataAttribute(string data){Data= data;}}//这里是调用方[Import(typeof(IMyInterface))]private Lazy<IMyInterface, IDictionary<string, object>> MyInterface;

第1个设计点:一个类,里面包含N个attribute,比如上述中的MyMetaData、其他自定义的Attribute,我们打算其中MyMetaData打算作为MEF的正统Attribute,而其他自定义的Attribute只是我们私有的,不打算用在MEF框架上。说明MEF 框架要分辨开那些特性是要的,那些特性不需要,所以MyMetaDataAttribute 这个特性也要标记MEF框架提供的MetadataAttribute。 这样MEF就可以分辨开。这个设计点,用两个字总结一下:过滤

第2个设计点:一个类,有很多的attribute,其中有很多的的特性是符合MEF规范。刚好是个字典模型:<特性,值>。   那么MEF提供了字典:IDictionary<string, object>。   里面包含了每个attribute的名称(字典的string)。以及每个attribute所对应的值。总结一下:特性的集合,方便调用方调用。

MEF 元数据设计原理相关推荐

  1. Salesforce低代码平台底层架构设计原理一:多租户与元数据驱动的概念

    先自我介绍一下哈,本人拥有17年的IT服务经验.从2011年开始从事Salesforce项目咨询与实施工作.最近几年呢,我一直都在研发一些自己的产品,同时也给一些大厂提供一些咨询服务.所以我自认为对S ...

  2. 配置中心Apollo的设计原理

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:https://urlify.cn/eIBZne 前言 Ap ...

  3. kafka原理_P8架构师带你参透Kafka:设计原理、消息存储、消息消费原理等等

    本文转载自: linkedkeeper.com,作者:张松然 推荐阅读: 一个月面试了3家大厂Java岗,我发现这几个突破点 目录 Kafka的基本介绍 Kafka的设计原理分析 Kafka数据传输的 ...

  4. HTML5设计原理-------Jeremy Keith在 Fronteers 2010 上的主题演讲

    本文来源:http://archive.cnblogs.com/a/2012810/ 今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一方面,当然了,就是HTML5.我可以站在这儿只讲HTML5 ...

  5. [转]HTML5设计原理

    Jeremy Keith在 Fronteers 2010 上的主题演讲 今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一方面,当然了,就是HTML5.我可以站在这儿只讲HTML5,但我并不打算 ...

  6. HTML5设计原理 Jeremy Keith在 Fronteers 2010 上的主题演讲

    今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一方面,当然了,就是HTML5.我可以站在这儿只讲HTML5,但我并不打算这样做,因为如果你想了解HTML5的话,你可以Google,可以看书,甚 ...

  7. 基于设计原理与理念和实践的ElasticSearch学习、ELK日志收集、网盘搜索引擎

    目录 基于设计原理与理念和实践的ElasticSearch学习 一.ES基础入门 ElasticSearch是什么? ES优点: ES缺点: ElasticSearch应用场景 ElasticSear ...

  8. HTML5设计原理【转】

    今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一方面,当然了,就是HTML5.我可以站在这儿只讲HTML5,但我并不打算这样做,因为如果你想了解HTML5的话,你可以Google,可以看书,甚 ...

  9. 存储相关概要–BigTable设计原理

    BigTable核心设计原理 引言 1 数据模型 1.1 存储方式 1.2 数据拆分 1.3 与SQL的对比 2 体系架构 2.1 整体架构 2.2 元数据管理 3 读写流程 引言 BigTable是 ...

最新文章

  1. 数据的统计特征量有哪些
  2. MySQL高可用的几种方案
  3. 重磅发布|新一代云原生数据仓库AnalyticDB「SQL智能诊断」功能详解
  4. 手写自定义注解实现思路
  5. 自动,MySQL触发器,完整详细可收藏
  6. leetcode509. 斐波那契数(矩阵快速幂)
  7. php 批量删除挂马文件夹,万能删除服务器被挂马后删不掉的文件夹
  8. 为SQL Server创建基于“智能”触发器的审核跟踪
  9. 第一章 CLR执行模型
  10. struts标签logic:iterate的用法
  11. CHIL-SQL-LEFT JOIN 关键字
  12. 自动生成光纤测试资料的软件,光缆测试模板生成工具官方版
  13. 博图PLC仿真时,CPU一直出于STOP状态,无法启动
  14. 怎么将多张图片合成一个pdf文件
  15. oracle查找用户名和密码忘记了,Oracle忘记用户名和密码的解决方案
  16. 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 matlab程序(二)
  17. android10代码开启横幅通知,Android通知以编程方式启用横幅设置
  18. 必收藏的实用网站(一)
  19. 带联网功能的RFID宿舍门禁(五)-项目总结
  20. h5设计师 赚钱_作为设计师赚钱的10种方法

热门文章

  1. CentOs U盘启动引导盘
  2. 数据可视化_DataV
  3. Redis——持久化之AOF
  4. 线性回归-预测房价(机器学习)
  5. PCA主成分分析原理与基础知识
  6. 东软睿道杯计算机大赛,第八届“东软睿道杯”大学生创业大赛决赛顺利举行
  7. 虚幻引擎(UE5)最佳集成CesiumforUE教程(一)
  8. 极客大学架构师训练营大作业
  9. 猎头给3年程序员开出5万月薪,工作地点菲律宾,该不该去呢?
  10. js向input的value赋值