首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C# MEF插件使用及Demo分享

MEF简介 MEF,全称Managed Extensibility Framework(托管可扩展框架)。...单从名字我们不难发现:MEF是专门致力于解决扩展性问题框架,MSDN中对MEF有这样一段说明: Managed Extensibility Framework 或 MEF 是一个用于创建可扩展轻型应用程序库...定义了接口,里面一个是字符串类型Text,还有一个方法是DO;然后我们增加插入时继承接口即可 ---- 然后返回主程序里面的Form里声明我们接口 ? 然后我们写窗体调用加载插件初始化方法 ?...读完插件后加载到MenuStrip控件中用于显示出来方法 ? 构造函数里面直接初始化Init(),这样在在Form_Load里面就会加载到控件中显示了 ?...插件三里面除了实现接口,又增加了一个窗体Form1 然后我们在MyPlugin3里面写入接口实现方法 ? 可以看到Do里面是直接显示Form1 Form1里面增加了一个Button ? ?

2.7K31

使用 MEF 轻松实现云部署

您可能不时会发现自己在撰写工厂方法或在构造函数或所需初始化方法内创建依赖对象,但借助 MEF 之类框架,大部分此类工作不再是必需了。...通过在我们部署中将 MEF 与 StorageClient API 结合在一起使用,我们不必重新利用或重新部署我们 Web 角色,便可以部署和提供新。...我们不要在这里偏离这个目标 — 我们所有具体实现都具有追溯到某一接口类型继承。...这并不意味着每个都将直接继承自某个接口,但通常将具有抽象层,这些抽象层遵从“接口 “ 虚拟 “ 具体”之类模式。...使用 MEF 之类框架有许多原因,但这有点超出了我们在本文中重点介绍功能。

1.3K70
您找到你想要的搜索结果了吗?
是的
没有找到

.NET自带IOC容器MEF之初体验

本文主要把MEF作为一种IOC容器进行讲解,.net中可用IOC容器非常多, CastleWindsor,Unity,Autofac,ObjectBuilder,StructureMap,Spring.Net...等,这些第三方工具各不相同,但功能大体都相同,大都需要事先对接口与实现进行配对(通过代码或配置文件),然后由系统自动或手动来通过接口来获得相应实现实例,对象实例化工作由IOC容器自动完成。...概述 官方说法: Managed Extensibility Framework(MEF)是.NET平台下一个扩展性管理框架,它是一系列特性集合,包括依赖注入(DI)等。...MEF还提供了一些用来定位和加载可用扩展方法MEF允许使用附加元数据对扩展进行标记,从而达到易于丰富查询和筛选目的。 工作原理 ?...在特性化编程模型中,导入和导出是由修饰或成员使用 Import 和Export 特性声明。 Export 特性可修饰、字段、属性或方法,而 Import 特性可修饰字段、属性或构造函数参数。

1.6K21

Asp.Net Mvc3.0(MEF依赖注入理论)

前言 Managed Extensibility Framework(MEF)是.NET平台下一个扩展性管理框架,它是一系列特性集合,包括依赖注入(DI)等。...MEF方式 MEF 提供一种通过“组合”隐式发现组件方法MEF 组件(称为“部件-Part”)。...部件以声明方式同时指定其依赖项(称为“导入-Import”)及其提供功能(称为“导出-Export”)。 MEF原理上很简单,找出有共同接口导入、导出。然后找到把导出实例化,赋给导入。...说到底MEF就是找到合适实例化,把它交给导入。 使用 MEF 编写可扩展应用程序会声明一个可由扩展组件填充导入,而且还可能会声明导出,以便向扩展公开应用程序服务。 ...在特性化编程模型中,导入和导出是由修饰或成员使用 Import 和Export 特性声明。 Export 特性可修饰、字段、属性或方法,而 Import 特性可修饰字段、属性或构造函数参数。

67530

.NET Core 和 .NET Framework 中 MEF2

,微软称之为 MEF2,但因为接口兼容,也直接称之为 MEF .NET 开发团队觉得 MEF 第一代性能太差,于是通过 NuGet 为移动设备发布了可移植库,是个轻量级版本,只移植了 .NET Framework...它接口相比于 .NET Framework 中原生带已经变了,中文和英文参考资料很少,几乎都是参考微软官方发布文档才能使用。所以本文将为大家提供其中文使用方法指导。...比较难框架代码,给开发团队中写框架那一部分成员。 业务代码 业务代码写法其实取决于框架开发者怎么去定义框架。但是,为了方便大家理解,在这一节我将只说 MEF2 最原生使用方法。...框架那一节我才会说明如何自定义业务代码写法。 最原生使用方法其实只有两个——[Import] 和 [Export],其它都是变种!...具体说来,标记了 Export 将导出给其它使用;标记了 Import 属性/字段/方法参数等将接收来自 Export 那些/属性/字段实例。

1.4K10

无特性 MEF 配置方法

这种公开扩展点和定义插件方法使用所谓特性化编程模型,开发人员可以使用特性修饰属性、甚至方法,以通告需要具有特定类型依赖关系或能够满足特定类型依赖关系。...一个部分指定要处理一个或一组;另一部分指定要应用于选定、这些属性或这些构造函数特性、元数据和共享策略。...此处添加代码段是接受 Func 方法 SelectConstructor。这为我提供了一种指定构造函数方法。...您可以指定一个约定,例如,具有最小或最大参数个数构造函数始终为 ImportingConstructor。...在我示例中,由于只有一个构造函数,因此,我可以使用选择第一个也是唯一一个构造函数简单案例。

1.3K50

.Net5中WebApi使用MEF2框架使用

02 创建Mef接口 1.创建WebMef.Core库 也是新建一个.net5库,这个库里用来写Mef插件接口 2.添加Mef2Nuget包 在Nuget包中添加Microsoft.Composition...这个组件即为MEF2组件。 3.创建IMSG接口 创建一个IMsg接口,里面定义了两个属性和三个函数方法。...创建Plugin1和Plugin2两个插件 然后在右键添加引用中加入刚才创建WebMef.Core库 两个插件继承自IMsg,然后写实现方法。...,要注意点就是要在前面加上[Export(typeof(IMsg))] 04 创建Mef注册 上面几步已经把简单接口及实现方法都写完了,接下来要在WebMef.Core库中创建一个MefRegister...新建一个MefConntrol,加入一个Get方法,根据输入name名称查找出对应MEF插件,然后直接调用接口实现Send方法即可。

88830

Ioc模式和MEF

后被Martin Fowler改名为 Dependency Injection 依赖注射,也就是将之间关系通过第三方进行注射,不需要自己去解决调用关系。   ...IOC模式大致有三种: 第一种:接口注入方式 第二种:构造函数注入方式 第三种:属性注入方式。...选择MEF方式 .net中可用IOC容器非常多, CastleWindsor,Unity,Autofac,ObjectBuilder,StructureMap,Spring.Net等,这些第三方工具各不相同...,但功能大体都相同,大都需要事先对接口与实现进行配对(通过代码或配置文件),然后由系统自动或手动来通过接口来获得相应实现实例,对象实例化工作由IOC容器自动完成。   ...MEF是不需要使用配置文件或代码对接口与实现进行一一配对,只需要简单使用几个Attribute特性,就能自动完成源与目标的配对工作 3.自动化:系统初始化时自动遍历程序目录或指定文件夹下dll,根据程序集中接口特定

45520

MEF框架基础理解

MEF、Unity、MAF(包括Prism框架部分)、Ninject、StructureMap、Autofac等,都是IoC思想具体实现。...IoC中概念 (1)依赖(Dependency):表示有关联,一个依赖于另一个。在日常编码时候大家追求都是高内聚低耦合这种就是良性依赖。...将标记了Export特性dll注册到IoC容器中。 (5)IoC容器: 依赖注入框架,用来映射依赖,管理对象创建和生存周期。...特性通常用Attribute结尾,在使用时候可以用全称,也可以去掉这个结尾,也可以加上小括号显示调用构造函数,如果不加小括号默认调用无参构造函数,也可以在括号内直接给属性或字段赋值。...使用场景:为或成员添加描述信息,然后在使用时候拿到该信息 (7)MEF提供三种方式发现部件 AssemblyCatalog 在当前程序集发现部件。

44210

Prism之Bootstrapper

大家好,又见面了,我是你们朋友全栈君。 在程序中使用框架必然要有一个切入点,框架会在这里进行初始化,处理相关配置信息等。...当然如果你不喜欢这两个容器或者已有的程序使用了其它容器(Spring.Net, Castle等),也可以通过继承Boostrapper抽象基来实现自己SpringBootstrapper和CastleBootstrapper...注册框架异常类型 Prism提供了ExceptionExtensions来帮助开发人员定位异常发生根异常。...默认情况下这是个空方法,可以通过重写这个方法加入自定义逻辑,可以在这个方法中将Shell作为Silverlight程序根容器页面显示出来。...所以不管使用什么样容器,都需要提供一个实现了IServiceLocator接口适配器,使用Unity要提供UnityServiceLocatorAdapter,使用Mef要提供MefServiceLocatorAdapter

52510

Asp.Net Mvc3.0(MEF依赖注入理论)

前言 Managed Extensibility Framework(MEF)是.NET平台下一个扩展性管理框架,它是一系列特性集合,包括依赖注入(DI)等。...MEF方式 MEF 提供一种通过“组合”隐式发现组件方法MEF 组件(称为“部件-Part”)。...部件以声明方式同时指定其依赖项(称为“导入-Import”)及其提供功能(称为“导出-Export”)。 MEF原理上很简单,找出有共同接口导入、导出。然后找到把导出实例化,赋给导入。...说到底MEF就是找到合适实例化,把它交给导入。 使用 MEF 编写可扩展应用程序会声明一个可由扩展组件填充导入,而且还可能会声明导出,以便向扩展公开应用程序服务。 ...在特性化编程模型中,导入和导出是由修饰或成员使用 Import 和Export 特性声明。 Export 特性可修饰、字段、属性或方法,而 Import 特性可修饰字段、属性或构造函数参数。

65420

深入理解DIP、IoC、DI以及IoC容器 摘要

方法构造函数注入 构造函数函数注入,毫无疑问通过构造函数传递依赖。因此,构造函数参数必然用来接收一个依赖对象。那么参数类型是什么呢?具体依赖对象类型?还是一个抽象类型?...那么构造函数参数应该是一个抽象类型。我们再回到上面那个问题,如何将SqlServerDal对象引用传递给Order使用呢?...方法接口注入 相比构造函数注入和属性注入,接口注入显得有些复杂,使用也不常见。具体思路是先定义一个接口,包含一个设置依赖方法。然后依赖,继承并实现这个接口。...LightInject:  http://www.lightinject.net/ (推荐使用Chrome浏览器访问)  以Ninject为例,我们同样来实现 [方法构造函数注入] 功能。...DI是IoC具体实现方式之一,使用最为广泛。IoC容器是DI构造函注入框架,它管理着依赖项生命周期以及映射关系。

59230

深入理解DIP、IoC、DI以及IoC容器

方法构造函数注入 构造函数函数注入,毫无疑问通过构造函数传递依赖。因此,构造函数参数必然用来接收一个依赖对象。那么参数类型是什么呢?具体依赖对象类型?还是一个抽象类型?...那么构造函数参数应该是一个抽象类型。我们再回到上面那个问题,如何将SqlServerDal对象引用传递给Order使用呢?...方法接口注入 相比构造函数注入和属性注入,接口注入显得有些复杂,使用也不常见。具体思路是先定义一个接口,包含一个设置依赖方法。然后依赖,继承并实现这个接口。...LightInject:  http://www.lightinject.net/ (推荐使用Chrome浏览器访问)  以Ninject为例,我们同样来实现 [方法构造函数注入] 功能。...DI是IoC具体实现方式之一,使用最为广泛。IoC容器是DI构造函注入框架,它管理着依赖项生命周期以及映射关系。

1K80

Prism教程二: Bootstrapper

Prism提供了一个抽象基Bootstrapper,这个里面包含了许多空方法,可以重写他们添加自己逻辑。...当然如果你不喜欢这两个容器或者已有的程序使用了其他容器(Spring.Net,Castle等),也可以通过继承Bootstrapper抽象来实现自己SpringBootstrapper和CastleBootstrapper...注册框架异常类型 Pism提供了ExceptionExtensions来帮助开发人员定位异常发生跟异常。...默认情况下这是个空方法,可以通过重写这个方法加入自定义逻辑,可以在这个方法中将Shell作为Silverlight程序根容器页面显示出来。...所以不管使用什么样容器,都需要提供一个实现了IServiceLocator接口适配器,如果使用Unity要提供UnityServiceLocator,使用Mef就要提供MefServiceLocator

80520

Caliburn.Micro学习笔记(一)----引导和命名匹配规则

用了几天时间看了一下开源框架Caliburn.Micro 这是他源码地址http://caliburnmicro.codeplex.com/ 文档也写很详细,自己在看它文档和代码时写了一些demo...和笔记,还有它实现原理记录一下 学习Caliburn.Micro要有MEF和MVVM基础 先说一下他命名规则和引导 以后我会把Caliburn.Micro Actions IResult,IHandle...一般我用我MEF做为容器,重写这个三个方法,写法也比较固定,就像上边我写那这样 如果有自己一些东西需要配置可以写在Config里 除了上边三个方法还有OnStartup和OnExit分别是程序进入和退出执行事件...匹配好View和ViewModel后 去查找View里元素名称和viewModel里方法或属性是否有一至的如果有一至就绑定 !...接口 这是一个专门用来打开窗体 它可以以Show() ShowDialog还有ShowPopup形式打开窗体 今天就先说到这,下次会写一下CaliburnActions Demo下载:BootstrapperAndConventions.rar

1.1K80

C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面

01 — 前言 MEF是微软自家托管可扩展框架,在这里我把它用成了ioc容器。...利用这一特点,在多人合作项目开发中,一个解决方法就可以拆分成很多个项目,只用在主项目中搭建框架,每个分支项目开发好以后加载到容器中,就可以实现界面和逻辑调用,可能这样解释有点生涩,具体我们看下面实例再去理解...02 — 新建项目MefTest 第一步 :在我们解决方法下添加新项目MefTest(库) 第二步:MefTest下添加MefTestView.xaml和MefTestViewModel.cs... viewmodel中: 定义 MefTestViewModel public MefTestViewModel MefTestView { get;set;} 然后在主程序构造函数中通过...这样如果我们定义了公共接口,直接导出接口类型,就很好地实现了主项目和子项目的解耦。

85740

【翻译】WPF应用程序模块化开发快速入门(使用Prism+MEF)【下】

索引 【翻译】WPF应用程序模块化开发快速入门(使用Prism框架)【上】 【翻译】WPF应用程序模块化开发快速入门(使用Prism+MEF)【中】 系统启动 系统使用Bootstrapper类型来启动程序...})] public class ModuleA : IModule 当使用MEF框架时候 ModuleExport特性允许MEF发现适当、 继承自IModule接口类型。...CreateModuleCatalog和ConfigureModuleCatalog方法 这样就可以通过配置文件来注册模块 使用MEF时 AggregateCatalog支持发现模块和类型 基于此,...QuickStartBootstrapper重写ConfigureAggregateCatalog 模版方法并使用MEF注册程序集 仍然使用ModuleCatalog加载配置文件来注册模块...也有按需加载模块业务 还有显示进度、控制模块间依赖性等业务 注意: 此快速入门示例还有一些额外 以帮助追踪模块初始化状态信息 这些主要是起了示范目的 Shell用户界面里包含了六个ModuleControl

69110
领券