MEF学习总结---Primitive层
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MEF学习总结---Primitive层相关的知识,希望对你有一定的参考价值。
Primitive层是属于依赖注入的通用模型,主要有如下核心类型:
1. ComposablePart是核心类,他表示组件容器中的每一个组件,是对真正组件实例的包装。ExportDefinition属性定义了该组件对外提供的功能描述。ImportDefinition属性定义了该组件对别的组件的依赖。Metadata是组件对自身的一些元数据的描述。该描述可成为别的组件导入依赖是的查询条件。
2. ComposablePartDefinition是ComposablePart的工厂类,它可以创建ComposablePart的实例。当然它也需要定义他所能创建组件的ImportDefinition和ExportDefinition和Metadata.
3. ComposablePartCatalog是一个负责发现并创建ComposablePartDefinition对象的组件仓库,他负责根据自身发现规则去发现所有的Composable的组件class,并为每一个组件class创建一个ComposablePartDefinition对象。MEF中内置了如下Catalog:
System.ComponentModel.Composition.Primitives.ComposablePartCatalog
System.ComponentModel.Composition.Hosting.AggregateCatalog
System.ComponentModel.Composition.Hosting.ApplicationCatalog
System.ComponentModel.Composition.Hosting.AssemblyCatalog
System.ComponentModel.Composition.Hosting.CompositionScopeDefinition
System.ComponentModel.Composition.Hosting.DirectoryCatalog
System.ComponentModel.Composition.Hosting.FilteredCatalog
System.ComponentModel.Composition.Hosting.TypeCatalog
每一种catalog定义了一类组件发现规则。
4. ExportDefinition是组件对外提供那些功能的描述。ContractName就是对外提供功能的标识符,Metadata则是这个功能的描述数据
5. ImportDefinition是定义组件对别的组件的依赖的描述。Constraint是一个用来匹、配符合条件的组件的表达式
6. Export是一个对组件实例的包装,当根据Import进行依赖填充时,Export对象表示根据Import匹配条件获取到的Export。GetExportedObject方法可以得到真正的组件实例。
Primitive层主要是定义了一套通用的依赖的表达,发现,和注入的模型。上层的Container层是该通用模型的消费者。
以上是关于MEF学习总结---Primitive层的主要内容,如果未能解决你的问题,请参考以下文章