MEF学习笔记

MEF学习笔记

一.来点废话

 在学习PRISM时遇到了MEF和Unity,然后就在网络上翻看大师们的案例,但是我还是觉得我自己要敲一边比较好。
 [MEF官方解释](https://msdn.microsoft.com/en-us/library/dd460648%28v=vs.110%29.aspx)

二.代码和截图

  • 整个解决方案结构

项目截图

  • IMEFLibary.Send代码
    很简单,就定义一个接口;

public interface ISend
{
void DoSend(string str);
}

  • CMFELibary.CSendA代码
    同样很简单,就是实现ISend

namespace CMEFLibrary
{
[Export(typeof(IMEFLibary.ISend))]
public class CSendA:ISend
{
public void DoSend(string str)
{
Console.WriteLine(“C”+str);
}
}
}

  • 控制台程序 Demo2

using IMEFLibary;
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace MEFDemo2
{
class Program
{
[Import]
public ISend Send { get; set; }
static void Main(string[] args)
{

        Program pro = new Program();
        pro.Compose();
        if (pro.Send != null)
        {
            pro.Send.DoSend("Ha Ha MEF");
        }
        Console.Read();
    }


    private void Compose()
    {

        //var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
        var catalog = new AssemblyCatalog(Assembly.LoadFile(System.Environment.CurrentDirectory+"\\"+ "CMEFLibrary"+".dll"));
        CompositionContainer container = new CompositionContainer(catalog);
        container.ComposeParts(this);
    }
}

}

  • 将CMFELibary编译的Dll放置到Demo2的Debug文件夹下面
    这里写图片描述
    -编译,大功告成!

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值