C# MEF插件的使用及Demo分享

MEF简介

    MEF,全称Managed Extensibility Framework(托管可扩展框架)。单从名字我们不难发现:MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF有这样一段说明:

Managed Extensibility Framework 或 MEF 是一个用于创建可扩展的轻型应用程序的库。 应用程序开发人员可利用该库发现并使用扩展,而无需进行配置。 扩展开发人员还可以利用该库轻松地封装代码,避免生成脆弱的硬依赖项。 通过 MEF,不仅可以在应用程序内重用扩展,还可以在应用程序之间重用扩展。

开始编码

我们新建一个桌面应用程序项目起名为MefDemo

在Form1下面增加一个MenuStrip,改名为ms

不用加任何项,我们到时候进行动态加载


在解决方案里右键添加新建项目选择类库

这个类库用来实现插件的接口

建好后在里面增加一个类起名为IPlugin

定义了接口,里面一个是字符串类型Text,还有一个方法是DO;然后我们增加插入时继承接口即可


然后返回主程序里面的Form里声明我们的接口

然后我们写窗体调用加载插件的初始化方法

读完插件后加载到MenuStrip控件中用于显示出来的方法

构造函数里面直接初始化Init(),这样在在Form_Load里面就会加载到控件中显示了

主窗体的代码这就完成了


插件编写

我们在解决方法里面再新建三个类库,为别叫Plugin1,Plugin2,Plugin3

Plugin1

插件里面的Text 和Do()就是实现接口的对应方法,我们在plugin1里面定义为插件1,  DO的方法实现弹出窗体显示插件1中文

Plugin2

和插件1相同,只不过名称不同

Plugin3

插件三里面除了实现的接口类,又增加了一个窗体Form1

然后我们在MyPlugin3里面写入接口的实现方法

可以看到Do里面是直接显示Form1

Form1里面增加了一个Button

Button的事件就是弹出窗体显示我是插件3


这样代码就完后实现了,编译完成后我们把三个插件的DLL放到运行目录下的plugin下面




下面的自己做的这个MEF的DEMO演示视频:

整个Mef的Demo源码下载:

链接:https://pan.baidu.com/s/1UzE6TQjGsx7KLRPp1I4qAw 密码:3qkr

-END-

长按下方二维码关注

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 对于“c”的问题,需要进一步明确问题的具体内容。在数学中,“c”可能代表一些常数或系数,例如在一元一次方程中,c通常代表常数项;在求导中,c则代表常数函数的导数为零;在复数中,c则常用于表示实部。 在计算机领域中,C语言是一种广泛使用的编程语言,它具有高效、可移植、简洁等特点,成为了操作系统、网络、嵌入式系统等方面的主流开发语言。同时,“c”也是C语言代码中的一个标记符号,通常用于表示变量或函数名。 除此之外,在其他领域中,“c”也可能有不同的含义和用法。例如在物理学中,c代表光速常数;在化学中,c可能代表一种化合物的命名方式等。 综上所述,对于“c”的问题需要明确具体的语境和意义,才能准确回答。 ### 回答2: C是计算机科学中的一种编程语言,也是一种很常见的编程语言。它由美国贝尔实验室的丹尼斯·里奇在20世纪70年代初开发而成。 C语言具有简洁、高效的特点,被广泛应用于系统软件和应用软件开发中。C语言通过控制硬件资源和底层操作系统功能,提供了对计算机底层的直接访问能力,因此在开发操作系统、嵌入式系统和驱动程序等方面有着广泛的应用。 C语言的语法简洁明了,易于学习和理解。它具有结构化的特点,支持模块化的程序设计,程序可以分成多个独立的、可复用的模块,方便代码的维护和扩展。C语言还提供了丰富的库函数,开发者可以利用这些库函数快速实现各种功能。 C语言是编写高效代码的重要工具。由于C语言的语法和特性与机器语言非常接近,因此编写的程序在执行效率上非常高。C语言还可以直接调用汇编语言,利用汇编语言进行优化,进一步提高了程序的性能。 总之,C语言是一种重要的编程语言,广泛应用于计算机科学领域。其简洁、高效、灵活的特点使得它成为开发各种软件和系统的首选语言之一。对于想要从事编程领域的人来说,掌握C语言是一个重要的基础,可以帮助他们理解底层原理,提高程序的执行效率,实现各种功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vaccae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值