MEF基本概念
2014-09-10 21:48
162 查看
基本概念:
ManagedExtensibilityFramework或MEF是一个用于创建可扩展的轻型应用程序的库,在.NET4.0发布
Container:容器,使用CompositionContainer类表示,使用目录提供的部件执行组合操作,即将导入绑定到导出
Catalog:目录,存放部件的地方,当需要某个部件时会在目录中寻找,可以作为目录的有type,assembly,directory
Part:部件,即实现契约的类
Import:导入,使用ImportAttribute进行修饰,可将某个对象声明为Import,可以修饰field,property,parameter等。每个导入都有一个契约,用于匹配对应的导出.可以修饰字段,属性或构造函数参数
Export:导出,导出契约的实现,对应一个Import,可以修饰类,字段,属性或者方法
Contract:契约,一种约定,代码中表现为接口或者抽象类
示意图:
示例代码:
ManagedExtensibilityFramework或MEF是一个用于创建可扩展的轻型应用程序的库,在.NET4.0发布
Container:容器,使用CompositionContainer类表示,使用目录提供的部件执行组合操作,即将导入绑定到导出
Catalog:目录,存放部件的地方,当需要某个部件时会在目录中寻找,可以作为目录的有type,assembly,directory
Part:部件,即实现契约的类
Import:导入,使用ImportAttribute进行修饰,可将某个对象声明为Import,可以修饰field,property,parameter等。每个导入都有一个契约,用于匹配对应的导出.可以修饰字段,属性或构造函数参数
Export:导出,导出契约的实现,对应一个Import,可以修饰类,字段,属性或者方法
Contract:契约,一种约定,代码中表现为接口或者抽象类
示意图:
示例代码:
//契约Contract
publicinterfaceICalculator
{
intAdd(inta,intb);
intSub(inta,intb);
}
//此处我们导出了契约,这就是一个部件(Part)
[Export(typeof(ICalculator))]
publicclassDigitalCalculator:ICalculator
{
publicintAdd(inta,intb)
{
returna+b;
}
publicintSub(inta,intb)
{
returna-b;
}
}
[TestClass]
publicclassDigitalCalculatorTest
{
privateCompositionContainercontainer;
[Import(typeof(ICalculator))]
publicICalculatorcalculator;
publicDigitalCalculatorTest()
{
//AssemblyCatalog目录的一种,表示在相应的程序集中搜索
AssemblyCatalogcatalog=newAssemblyCatalog(typeof(DigitalCalculator).Assembly);
container=newCompositionContainer(catalog);
//组装部件,ComposeParts是扩展方法
container.ComposeParts(this);
}
[TestMethod]
publicvoidAdd_ReturnSum()
{
intx=3,y=2;
intactual=calculator.Add(x,y);
intexpected=5;
Assert.AreEqual(expected,actual);
}
[TestMethod]
publicvoidSub_ReturnDiff()
{
intx=3,y=2;
intactual=calculator.Sub(x,y);
intexpected=1;
Assert.AreEqual(expected,actual);
}
}
相关文章推荐
- MEF基本概念
- 【离散数学】第一章 命名逻辑的基本概念(1.2 命题公式及其赋值 )
- MC基本概念,学习必看预备知识!!!
- 股票基本名词概念
- 网游运营基本概念及专业术语
- linux学习笔记(一)-基本概念和文件结构(FHS)
- [置顶] 并发基本概念
- 第十八课 面向对象的基本概念(4)
- Web开发的26项基本概念和技术
- Hbase原理、基本概念、基本架构
- Grafana系列教程–Grafana基本概念
- Struts 框架的基本概念及实现MVC模式的原理
- hadoop起步之HDFS基本概念
- 基本概念学习(9004)---段寄存器
- HTML基础--基本概念 00
- Hbase原理、基本概念、基本架构
- 数字图像处理入门(一)-基本概念
- RAID基本概念
- 基本概念学习(9009)---线性地址
- 计算机网络基本概念