关于MEF的一些简单的说明

本文介绍MEF框架的基本用途和使用方法,通过实例演示了如何利用MEF将一个类中的属性值传递给另一个类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚刚看了一下MEF的一些示例, 网上的教程太复杂, 理解起来有些麻烦. 经过阅读别人的代码, 把自己的理解记录一下, 方便以后使用.

MEF能干什么?

首先回答这个问题, MEF可以将两个对象组合到一起, 这里的对象可以是变量, 类, 属性等. 然后用一个对象对替换另一个对象.

比如说: 在class StringProvider中, 有属性Output,   而在class Client中要使用Output的值. 使用MEF就可以方便的将StringProvider中的Output拿到Client这个类中使用.

而如何去组合使用就是MEF做的事情.


代码说明

下面的代码中, 定义为[Export("Message")]的Output就是将要被其它地方所使用的属性.

[Import("Message")]中Import是说明, private string message的这个变量将会使用Export中Output的值.

"Message"所代表的意思是匹配的字符串, 用于指定一对Export和Import.

 public class StringProvider
    {
        [Export("Message")]
        public string Output
        {
            get { return "Hello MEF Framework"; }
        }
    }

    public class Client
    {
        [Import("Message")]
        private string message = null;
        public void Print()
        {
            Console.WriteLine(this.message);
            Console.ReadLine();
        }
    }

让MEF组装吧

                Client client = new Client();
                CompositionContainer container = new CompositionContainer();
                CompositionBatch batch = new CompositionBatch();
                batch.AddPart(new StringProvider()); //将被组装对象放入.
                batch.AddPart(client); //将组装对象放放
                container.Compose(batch); //MEF对象根据Export和Import的定义自动的实现替换操作
                client.Print();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值