MEF 元数据设计原理
本文不说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 元数据设计原理相关推荐
- Salesforce低代码平台底层架构设计原理一:多租户与元数据驱动的概念
先自我介绍一下哈,本人拥有17年的IT服务经验.从2011年开始从事Salesforce项目咨询与实施工作.最近几年呢,我一直都在研发一些自己的产品,同时也给一些大厂提供一些咨询服务.所以我自认为对S ...
- 配置中心Apollo的设计原理
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:https://urlify.cn/eIBZne 前言 Ap ...
- kafka原理_P8架构师带你参透Kafka:设计原理、消息存储、消息消费原理等等
本文转载自: linkedkeeper.com,作者:张松然 推荐阅读: 一个月面试了3家大厂Java岗,我发现这几个突破点 目录 Kafka的基本介绍 Kafka的设计原理分析 Kafka数据传输的 ...
- HTML5设计原理-------Jeremy Keith在 Fronteers 2010 上的主题演讲
本文来源:http://archive.cnblogs.com/a/2012810/ 今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一方面,当然了,就是HTML5.我可以站在这儿只讲HTML5 ...
- [转]HTML5设计原理
Jeremy Keith在 Fronteers 2010 上的主题演讲 今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一方面,当然了,就是HTML5.我可以站在这儿只讲HTML5,但我并不打算 ...
- HTML5设计原理 Jeremy Keith在 Fronteers 2010 上的主题演讲
今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一方面,当然了,就是HTML5.我可以站在这儿只讲HTML5,但我并不打算这样做,因为如果你想了解HTML5的话,你可以Google,可以看书,甚 ...
- 基于设计原理与理念和实践的ElasticSearch学习、ELK日志收集、网盘搜索引擎
目录 基于设计原理与理念和实践的ElasticSearch学习 一.ES基础入门 ElasticSearch是什么? ES优点: ES缺点: ElasticSearch应用场景 ElasticSear ...
- HTML5设计原理【转】
今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一方面,当然了,就是HTML5.我可以站在这儿只讲HTML5,但我并不打算这样做,因为如果你想了解HTML5的话,你可以Google,可以看书,甚 ...
- 存储相关概要–BigTable设计原理
BigTable核心设计原理 引言 1 数据模型 1.1 存储方式 1.2 数据拆分 1.3 与SQL的对比 2 体系架构 2.1 整体架构 2.2 元数据管理 3 读写流程 引言 BigTable是 ...
最新文章
- 数据的统计特征量有哪些
- MySQL高可用的几种方案
- 重磅发布|新一代云原生数据仓库AnalyticDB「SQL智能诊断」功能详解
- 手写自定义注解实现思路
- 自动,MySQL触发器,完整详细可收藏
- leetcode509. 斐波那契数(矩阵快速幂)
- php 批量删除挂马文件夹,万能删除服务器被挂马后删不掉的文件夹
- 为SQL Server创建基于“智能”触发器的审核跟踪
- 第一章 CLR执行模型
- struts标签logic:iterate的用法
- CHIL-SQL-LEFT JOIN 关键字
- 自动生成光纤测试资料的软件,光缆测试模板生成工具官方版
- 博图PLC仿真时,CPU一直出于STOP状态,无法启动
- 怎么将多张图片合成一个pdf文件
- oracle查找用户名和密码忘记了,Oracle忘记用户名和密码的解决方案
- 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 matlab程序(二)
- android10代码开启横幅通知,Android通知以编程方式启用横幅设置
- 必收藏的实用网站(一)
- 带联网功能的RFID宿舍门禁(五)-项目总结
- h5设计师 赚钱_作为设计师赚钱的10种方法