前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# MEF插件的使用及Demo分享

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

作者头像
Vaccae
发布2019-07-24 11:30:31
2.7K0
发布2019-07-24 11:30:31
举报
文章被收录于专栏:微卡智享微卡智享

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演示视频:

视频内容
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档