【C#进阶系列】【MEF框架(四)】

C#进阶系列

第四章 【C#进阶系列】【MEF框架(四)】
第三章 【C#进阶系列】【MEF框架(三)】
第二章 【C#进阶系列】【MEF框架(二)】
第一章 【C#进阶系列】【MEF框架(一)】



前言

在(一)已经对MEF作了基本的介绍,这里针对MEF的延迟加载、元数据作介绍。


一、延迟加载

Lazy<T, TMetadata> 是由 MEF 提供来保存对导出的间接引用的类型。 除了导出对象本身,你还可以获取导出元数据或描述导出对象的信息。

每个Lazy<T, TMetadata> 都包含一个代表实际操作的 IOperation 对象和一个代表元数据的 IOperationData 对象。

延迟加载在导出部件处的设置没什么变化,保持原有的设置即可。

在导入的时候,需要使用.NET提供的Lazy类来完成。

通过Lazy封装的对象即自动提供了延迟加载的机制。访问对象的方式也略微有所改变,当然不能直接通过属性(pro.Services_MathBook.GetBookName())进行访问,而是需要通过Lazy.Value(pro.Services_MathBook.Value.GetBookName())来访问,此属性值包含的即使延迟加载的对象。
另外Lazy.IsValueCreated属性提供了判断对象是否加载的功能,如果为true则表示对象已加载,否则为未加载。

namespace MEF_P1
{
   
    public interface IBookService
    {
   
        string BookName {
    get; set; }
        string GetBookName();
    }
    [Export("ContractName_MathBook", typeof(IBookService))]
    public class
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值