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

C#+WPF+MVVM+导航路由+MEF(一) C#+WPF+MVVM+导航路由+MEF(一) 初学者WPF入门教程 阅读详情
AI摘要

文章介绍了MEF(ManagedExtensibilityFramework)框架的基本概念和使用,通过运动控制上位机开发的场景展示了MEF如何解决代码耦合问题和实现可扩展性。MEF使得应用程序能够动态发现和使用扩展,无需硬编码依赖,增强了软件的灵活性和可维护性。

C#进阶系列

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



前言

这里对MEF作了基本的介绍,包括使用了一个特定场景(搞自动化运控上位机开发的应该更容易代入场景了),一步一步地介绍了如果从常用的编程过渡到框架性的编程开发。


一、MEF介绍

  • MEF,全称Managed Extensibility Framework(托管可扩展框架)。MEF是专门致力于解决扩展性问题的框架。
  • MSDN:Managed Extensibility Framework 或 MEF 是一个用于创建可扩展的轻型应用程序的库。 应用程序开发人员可利用该库发现并使用扩展,而无需进行配置。 扩展开发人员还可以利用该库轻松地封装代码,避免生成脆弱的硬依赖项。 通过 MEF,不仅可以在应用程序内重用扩展,还可以在应用程序之间重用扩展。
  • MEF(Managed Extensibility Framework),是轻量级的插件框架。使用简单,功能强大。
  • MEF 位于 ComponentModel.Composition 程序集中,添加 System.ComponentModel.Composition 和 System.ComponentModel.Composition.Hosting 的项目引用

二、为什么要用MEF

我们先假设一个场景:在运动控制上位机编程开发中,有固高、雷赛两种运动控制卡,现在我们需要根据实际设备使用哪种卡来实现不同的编程。
常规的实现:

class Program
{
   
   
    static void Main(string[] args)
    {
   
   
        string ret = "";
        string cardName = "实际设备使用哪种运动控制卡";
        if (cardName == "固高板卡")
        {
   
   
            CLeadshine cLeadshine = new CLeadshine();
            ret = cLeadshine.InitMotionCard();
            ret = cLeadshine.ExitMotionCard();
        }
        else if (cardName == "雷赛板卡")
        {
   
   
            CGoogol cGoogol = new CGoogol();
            ret = cGoogol.InitMotionCard();
            ret = cGoogol.ExitMotionCard();
        }
    }
}

public class CLeadshine
{
   
   
    public string InitMotionCard()
    {
   
   
        return "初始化固高板卡成功";
    }
    public string ExitMotionCard()
    {
   
   
        return "退出固高板卡成功";
    }
}

public class CGoogol
{
   
   
    public 
C#系列-C#大数据MEF分页用法(22) 请注意,这个例子非常简化,实际应用中可能需要考虑更多的细节,比如错误处理、性能优化和数据库查询的延迟执行等。与分页没有直接的联系,因为分页通常与数据库查询和结果集处理相关,而不是与应用程序的扩展性有关。如果你正在处理大数据集,你可能需要考虑更高效的分页策略,比如直接在数据库层面使用。的插件系统中实现分页功能,你可以将分页逻辑封装在一个插件或服务中,然后通过。的导入和导出功能,你需要在应用程序的启动代码中配置。接下来,在需要使用分页功能的地方,你可以导入。接口,并且可以被其他部分的应用程序所导入。 阅读详情

相关推荐

【C#】MEF 插件

下面把、 “”在 工程里到底怎么做,讲清楚( 后续要让新人“照文档走就通”的标准来写)。

weixin_44939430的博客 606

MEF(Managed Extensibility Framework)入门教程

入门教程,通过简单的实例分析如果编写MEF框架程序,觉得值这个分数。

C#MEF简单例子

这段代码是一个MEF的小例子,适合入门看,老手请绕道。C#写的。

西门子S7-1200PLC PID_Temp工艺指令在恒温控制中的实战应用

本文详细介绍了西门子S7-1200PLC中PID_Temp工艺指令在恒温控制系统中的实战应用。从硬件选型、安全接线,到TIA Portal软件组态、编程及核心PID_Temp指令调用,手把手指导搭建系统。重点讲解了利用指令自带的预调节与精确调节功能进行PID参数自整定,最终实现高精度、低波动的温度控制,适用于塑料成型、食品烘烤等多种工业场景。

i1j2k的博客 234

SAP ERP与金蝶云星空的集成案例(新能源光伏行业)

通过建设PLM、SAP、MES、WMS、SCADA、EAM等多系统集成的工业互联网平台作为数字化工厂的控制中枢,不仅可以实现人员、设备、物料、工艺参数、产品等生产全流程追溯管理,同时也可以根据数据采集进行生产现场的控制调节,最大程度降低能耗水平。销售订单创建下推金蝶采购订单创建修改、销售订单创建下推金蝶销售订单创建修改、销售发货过账下推金蝶采购入库单、销售发货过账下推金蝶销售出库单:在SAP ERP系统创建销售订单、销售发货过账单后推送到云星空系统,进行采购/销售订单的创建修改、完成物料的入库和出库流程。

集信通 1615

Unity WebGL项目如何实现画布透明,完美融入网页背景(附.jslib文件与完整配置)

本文详细解析了Unity WebGL项目实现画布透明化的技术原理与实战步骤,从.jslib文件配置到前端框架集成,帮助开发者解决默认背景色问题,实现3D内容与网页设计的无缝融合。重点介绍了透明化核心机制、常见误区及React/Vue等现代框架中的最佳实践方案。

weixin_31896061的博客 299

【DRAM存储器五十六】LPDDR5介绍--WCK2CK Leveling和Read gate training

简述LPDDR5 WCK2CK leveling和read gate traning基本原理与操作步骤

highman110的博客 8787

基于江协科技STM32创建HAL库工程模板

基于江协科技STM32入门教程创建的HAL库工程模板

2401_82728381的博客 1132

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 341

【k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法

【k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法

jks212454的博客 2307

26.Labview波形图、XY图、强度图使用精讲

1. 波形图基础概念,如何使用,1.1 波形图与波形图表1.2 XY图如何设计、如何使用?1.3 强度图原理、如何使用、使用案例;2. 图形的参数设置2.1 波形图及波形图表的外观设计2.2 XY图的前面板设计2.3 强度图属性设置。

关注我,更多技术问题欢迎私聊~ 7500

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 【WPF系列】【Adorner】
下一篇: 【C#进阶系列】【MEF框架(二)】
Aflashstar
博客等级 码龄12年 205粉丝 38原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值