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

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

MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且对已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互;同时MEF...使用 MEF 编写的可扩展应用程序会声明一个可由扩展组件填充的导入,而且还可能会声明导出,以便向扩展公开应用程序服务。 每个扩展组件都会声明一个导出,而且还可能会声明导入。 ...在特性化编程模型中,导入导出是由修饰类或成员使用 Import Export 特性声明的。 Export 特性可修饰类、字段、属性或方法,而 Import 特性可修饰字段、属性或构造函数参数。...如何导入多个部件  一般的 ImportAttribute 特性由一个且只由一个 ExportAttribute 填充。 如果有多个导出可用,则组合引擎将生成错误。...需要在关闭执行工作的部件需要释放资源的部件应照常为 .NET Framework 对象实现 IDisposable。

67530

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

MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且对已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互;同时MEF...使用 MEF 编写的可扩展应用程序会声明一个可由扩展组件填充的导入,而且还可能会声明导出,以便向扩展公开应用程序服务。 每个扩展组件都会声明一个导出,而且还可能会声明导入。 ...在特性化编程模型中,导入导出是由修饰类或成员使用 Import Export 特性声明的。 Export 特性可修饰类、字段、属性或方法,而 Import 特性可修饰字段、属性或构造函数参数。...如何导入多个部件  一般的 ImportAttribute 特性由一个且只由一个 ExportAttribute 填充。 如果有多个导出可用,则组合引擎将生成错误。...需要在关闭执行工作的部件需要释放资源的部件应照常为 .NET Framework 对象实现 IDisposable。

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

基于OEA框架的客户化设计(三) “插件式”DLL

动态加载DLL     在产品线工程的开发中,需要动态加载的DLL,是上述的“721”中的“2” “1”。     OEA框架中,使用MEF作为插件框架。...(详见金根的:《.Net4下的MEF(Managed Extensibility Framework) 架构简介》)。...Module文件夹下,框架会自动加载所有的实体类型及其对应的元数据,并按照元数据的内容使用AutoUI模块进行展示。    ...图3 加入合同模块后的软件运行界面 自定义视图     一个独立模块的设计,不会考虑用户是否真的需要其所有的功能。在把它组装进产品后,很可能需要对它进行一些定制。...例如,在合同模块的DLL放到产品中后,框架自动加载所有类型并显示,这就导致现在的ContractBudget类原有的Budget类同时显示出来了。

1K90

.Net5中WebApi使用MEF2框架的使用

MEF的方式,原来MEF的插件方式在《C# MEF插件的使用及Demo分享》的文章中介绍过,不过当时用的是WinForm版本,现在是要在NET5上使用,所以就专门做了DEMO程序来验证可行性。...关于MEFMEF2 微卡智享 微软发布了四个版本的 MEF: 随着 .NET Framework 4.0 发布,微软称之为 MEF 随着.NET Framework 4.5 发布,微软让它更好用了,微软称之为...加载后的组件要加上特性ImportMany,而定义的组合窗口是使用CompositionHost,这里就和最初的Mef完全不一样的了。...(); } } } 05 WebApi启动注入依赖 完成上面的所有步骤后,接下来就是最后一步实现,在WebApi启动MEF注入依赖。...最终就实现了MEF2在.net5的webapi中的使用,调用的效果就是文章开头实现的图片。

88730

Caliburn.Micro Bootstrapper及IOC容器配置

这些问题都可以通过配置MEF等作为IOC容器后解决。 CM获得View实例的方式 在配置IOC容器之前,我们先看看,CM获取实例的方式。清楚的知道CM在内部是如何使用IOC的,才能更好的配置IOC。...也就是说我们把MEF作为IOC容器的时候,主要使用export部件相关的功能。不了解MEF的话,请了解一下MEF再看以下内容会比较容易理解。...事实上我们在用MEF作为IOC容器一般只把ViewModel导入容器,View不作处理的。所以,一定要记得把View所在的程序集加入到AssemblySource。...如果动态加载了模块,也建议能够同时在AssemblySourceIOC中注册模块。...注:ViewModel-First,ViewModel是必需要注入到IOC的。

81130

【翻译】WPF应用程序模块化开发快速入门(使用Prism框架)【上】

: 直接使用代码: 可以直接使用代码把模块注册到模块目录 这样你就可以咱找业务逻辑来决定哪些模块需要注册到系统中来 在代码中注册的模块需要引用到系统中来,不能在运行时动态加载 使用配置文件: Prism...支持通过加载一个配置文件来注册模块 这与在Silverlight中使用XAML方法注册模块的场景非常类似 在配置文件中声明模块可以让系统决定什么时候加载初始化模块 通过监视目录 可以指定一个目录, 如果有程序集被添加到此目录中...显示进度: 应用程序可以订阅一个“进度改变”事件 以展示下载的byte数量下载进度百分比, 下载完成行为: 程序可以订阅一个加载“模块完成”事件, 以处理模块加载初始化完成后的额外事件 使用不同的依赖注入容器...这里有两个使用不同依赖注入容器的快速入门示例 MEF模块化: 此模块化快速入门示例使用MEF倚赖注入容器 Prism推荐使用MEF的声明式特性 使ModuleCatalogMEF的ComposablePartsCatalog...这些控件还提供了一个tooltip 以显示它现在的初始化状态被发现的信息 在快速入门示例的最下面 有一个TextBox控件 在这里展示从程序创建开始到模块加载过程中的日志记录 下图为使用模块化MEF

91810

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

索引 【翻译】WPF应用程序模块化开发快速入门(使用Prism框架)【上】 【翻译】WPF应用程序模块化开发快速入门(使用Prism+MEF)【中】 系统启动 系统使用Bootstrapper类型来启动程序...CreateModuleCatalogConfigureModuleCatalog方法 这样就可以通过配置文件来注册模块 使用MEF AggregateCatalog支持发现模块类型 基于此,...QuickStartBootstrapper重写ConfigureAggregateCatalog 模版方法并使用MEF注册程序集 仍然使用ModuleCatalog加载配置文件来注册模块...在此快速入门中 即有在系统启动加载模块的业务 也有按需加载模块的业务 还有显示进度、控制模块间的依赖性等业务 注意: 此快速入门示例还有一些额外的类 以帮助追踪模块初始化的状态信息 这些类主要是起了示范的目的...ModuleTracker ModuleTracker类型为每个模块保存一个ModuleTrackingState ModuleTrackingState绑定到与之对应的ModuleControl ModuleControl使用一个默认的样式来展现模块的加载初始化状态

69110

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

应用程序开发人员可利用该库发现并使用扩展,而无需进行配置。 扩展开发人员还可以利用该库轻松地封装代码,避免生成脆弱的硬依赖项。...然后我们写窗体调用加载插件的初始化方法 ? 读完插件后加载到MenuStrip控件中用于显示出来的方法 ?...构造函数里面直接初始化Init(),这样在在Form_Load里面就会加载到控件中显示了 ?...插件里面的Text Do()就是实现接口的对应方法,我们在plugin1里面定义为插件1, DO的方法实现弹出窗体显示插件1中文 Plugin2 ?...插件1相同,只不过名称不同 Plugin3 ? 插件三里面除了实现的接口类,又增加了一个窗体Form1 然后我们在MyPlugin3里面写入接口的实现方法 ?

2.7K31

使用 MEF 轻松实现云部署

通过在我们的部署中将 MEF 与 StorageClient API 结合在一起使用,我们不必重新利用或重新部署我们的 Web 角色,便可以部署提供新类。...图 2 在启动生成目录 运行时复合 因为我们将要从存储中的文件加载目录,所以,我们将需要让这些文件进入我们的云存储容器中。...这要求在上载对 blob 设置 etag。此外,您可以通过存储上次更新时间应用 IfModifiedSince 的 AccessCondition,对重新生成 MEF 容器的更新方面进行优化。...在 MEF 中,复合容器从一个或多个目录生成。在本例中,我们将使用 DirectoryCatalog,因为这样可以很方便地将编录指向目录并且加载可用的二进制文件。...但是,我们还将循环使用这些角色,因为我们需要上载重新加载 AppDomain,以便刷新在容器中存储的类型定义。

1.3K70

C# WPF MVVM开发框架Caliburn.Micro IResult和协同程序⑥

只需在“Execute”方法中编写代码,并确保在完成引发“Completed”事件,无论是同步任务还是异步任务。...这在保持视图视图模型之间的分离的同时打开了许多可能性。...仅列出使用IResult实现可以做的一些有趣的事情:显示消息框、显示基于VM的模式对话框、在用户的鼠标位置显示基于VM的弹出窗口、播放动画、显示文件保存/加载对话框、基于VM属性而非控件将焦点放在特定的...MEF。...这允许您在视图模型中正常创建它们,同时仍然允许它们依赖于应用程序服务。在这种情况下,我们依赖于IShell。您还可以注入容器,但在本例中,我选择在内部使用IoC静态类。

44920

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

实际上MEF提供了发现组合的能力使你的应用程序可以加载扩展,为运行时的可扩展性提供了一种简单的解决方法:  MEF为宿主应用提供了一种标准的途径来暴露自身并使用外部扩展。...MEF还提供了一些用来定位和加载可用扩展的方法。MEF允许使用附加元数据对扩展进行标记,从而达到易于丰富的查询筛选的目的。 工作原理 ?...简短说一下MEF的工作原理,MEF的核心包括一个catalog一个CompositionContainer。category用于发现扩展,而container用于协调创建和梳理依赖性。...在特性化编程模型中,导入导出是由修饰类或成员使用 Import Export 特性声明的。 Export 特性可修饰类、字段、属性或方法,而 Import 特性可修饰字段、属性或构造函数参数。...container.ComposeParts(this); 下面我们使用一个简单的列子学习使用MEF 1、         项目结构图 ?

1.6K21

WPF使用MEF插件开发打造自己的工具箱

最近闲来无事,想着搞点事情来着,想搞一个工具箱程序,又想着自由灵活点,于是就选用了MEF.这玩意适用于小的项目,可以方便的做出一个插件开发系统....后续打算把它做成从服务器上检索插件的形式,找到想要的插件,就点击下载直接使用.嘿嘿.一步一步来吧. 下面我先介绍一下MEF MEF简介 MEF可以方便的在c#程序中实现插件式开发。...通过接口暴露公开方法,插件内继承接口的类可以通过[export]特性公开出去,宿主程序通过[import]特性建立接口类型的属性,启用插件方法.插件可以主程序不在一个程序集,实现插件完全独立的开发....使用MEF主要由4个步骤完成 1、定义插件插口 2、公开接口的实现类....(使用[export]特性) 3、通过[import]特性调用插件 4、加载到主程序中 话不多说,直接上代码,懂的人自然懂.不懂的建议先学一下c#基础哦 1.新建DLL工程.创建一个IPlugin 接口

1.7K31

C# WPF MVVM开发框架Caliburn.Micro自定义引导程序④

因此,如果您的所有视图都与应用程序位于同一个程序集中,您甚至不必担心这一点。如果有多个包含视图的引用部件,则需要记住这是一个扩展点。...此外,如果您正在动态加载模块,则需要确保在加载模块,它们已在IoC容器AssemblySource.Instance中注册。...您可以启动并运行MEF,还可以处理引导程序的其他一些关键扩展点。 当然,只要提供“GetInstance”“GetAllInstances”的实现,就可以使用所需的任何IoC容器。...02 给智者的话 虽然Caliburn.Micro确实通过引导程序的覆盖IoC类提供ServiceLocator功能,但您应该避免在应用程序代码中直接使用它。...您可以分别在应用程序启动或关闭重写OnStartupOnExit以执行代码,也可以在应用程序代码未专门处理的任何异常之后重写OnUnandledException以清除。

87110

MEF正在批准LSO Sonata API,以支持SDN业务

“重要的是我们需要提出一个标准的API定义,”几周前FierceTelecom在接受采访,网络点播负责人Voltolini表示。 “我们已经与MEF做了很多工作来定义API。...在去年的MEF 17上,AT&T,Orange,Colt一些供应商展示了使用LSO Orchestration Sonata软件开发套件(SDK)进行POC演示,以便在AT&TOrange的SDN架构中提供以太网服务...上个月,运营商Epsilon中国的DCConnect宣布了一种双向的、互通的网络服务,该服务需要双方的网络提供,并使用各自独立的SDN架构中的API-to-API接口。...APIs支持创建新的平台模型,并支持用户用一种新的方式使用全球的基础设施。通过APIs,网络正成为一种实用的程序,它可以集成到现有的平台中,并被所有类型的服务提供商初创的公司使用。...电信行业正在快速发展,有时很难等待开源社区,标准机构或MEF等组织提出的适合每个人的规范定义。但是,当服务提供商能够在以前无法到达的地区为客户提供按需服务,这些规范定义都值得等待。

58720

CenturyLink绘制了自己的虚拟化蓝图

据电信公司的Anil Simlot称,在虚拟化方面,CenturyLink通过使用内部开发的软件工具开辟了自己的道路。...我们一直在使用我们称之为Victor的工具,该工具最初是通过采用ONAP的一些部件并将我们的软件置于其上而构建的。我们拥有自己的工具,我们为了加载VNF而构建了它,它非常强大。...我们不会做出贡献,但我们可能会提供一些反馈类似的东西。我们是MEF的成员,我们的首席技术官(Aamir Hussain)是MEF的董事会成员,我们积极参与MEF,但我们现在不是任何开源组织的成员。...对于我们使用NFV的方式,我的整体方法是确保在构建产品的过程中,我们为VNFs的生命周期管理提供了一个良好的操作支持模型。...并确保我们有良好的基础设施支持,以及良好的仪器工具,使我们可以监测管理NFV。当我们推出这些NFV,我们必须确保所有这些都得到很好的定义理解。

29530

MEF框架基础理解

1.概要 什么是MEF? Managed Extensibility Framework (MEF) 是用于创建可扩展的轻量级应用程序的库。 它让应用程序开发人员得以发现使用扩展且无需配置。...MEF 让扩展不仅可在应用程序内重复使用,还可以跨程序重复使用。 如果聊到MEF不得不提到的是IoC(IoC-Invertion of Control),即控制反转。它是一种程序设计指导思想。...使用场景:为类或成员添加描述信息,然后在使用的时候拿到该信息 (7)MEF提供三种方式发现部件 AssemblyCatalog 在当前程序集发现部件。...这里就需要提到一个叫做特性的概念,上图中ExportImport就是特性。特性在这里的主要作用帮助Catalog发现基于约定特殊实现条件编码的插件。...= new AddFriendView()); } public void Init() { //该业务模块插件初始化的时候需要做的事情,例如加载资源文件

44210

.NET Core .NET Framework 中的 MEF2

---- MEF MEF2 其实微软发布了四个版本的 MEF: 随着 .NET Framework 4.0 发布,微软称之为 MEF 随着 .NET Framework 4.5 发布,微软让它更好用了...详细资料使用方法请参考微软官方的文档: Managed Extensibility Framework (MEF) - Microsoft Docs Attributed Programming Model...它的接口相比于 .NET Framework 中原生带的已经变了,中文英文的参考资料很少,几乎都是参考微软官方发布的文档才能使用。所以本文将为大家提供其中文的使用方法指导。...最原生的使用方法其实只有两个——[Import] [Export],其它都是变种!...如果属性或字段是 Lazy 类型,那么并不会立即注入,而是在访问到 Lazy.Value 才获取到实例(如果此时的创建过程由容器处理,那么第一次访问 Value 才会创建)。

1.4K10

【翻译】Prism4:初始化Prism应用程序(上)

类库搭建的应用程序需要使用依赖注入容器 Prism支持UnityMEF依赖注入容器 并且允许使用其他的依赖注入容器 引导程序的部分工作就是装配这个容器 并为容器注册类型 Prism类库包含UnityBootstrapper...MefBootstrapper类 这两个类实现了使用Unity或MEF所必须的功能 除了在前面的插图中展示的步骤 这两个类型还添加了针对各自容器的特殊步骤 创建框架 一般创建WPF应用程序, APP.XAML...这主要是因为框架画面依赖于服务 这些服务类似与区域主管 这些服务在框架画面显示之前被注册 关键决定 当你决定使用Prism类库 还需要做出一些额外的决定: 必须决定是使用MEF、Unity还是其他的依赖注入容器..., 如果不够你要自己创建你自己的日志服务 决定系统如何发现模块 使用目录查找、配置文件、或者xaml来加载模块 (模块必须由明确的特性代码标记) 关键场景 指定有序的启动环节 对你创建Prism应用程序来说非常有用...这一小节主要描述怎样创建一个bootstrapper(引导程序)、 并定制这个引导程序以启动自己的框架画面、 配置依赖注入容器、 注册系统级别的服务、 怎样加载初始化模块 为你的应用程序创建Bootstrapper

73120

无特性的 MEF 配置方法

MEF 版本 1 的主要重点是可扩展性,以使应用程序开发人员可以向第三方开发人员公开某些扩展点,并使第三方开发人员可以构建这些组件的加载项或扩展。...这种公开扩展点定义插件的方法使用所谓的特性化编程模型,开发人员可以使用特性修饰属性、类甚至方法,以通告需要具有特定类型的依赖关系或能够满足特定类型的依赖关系。...尽管特性在具有开放类型系统的可扩展性方案中非常有用,但对于生成已知的封闭类型系统来说有些多余。...在本文中,我首先介绍一些使用 MEF 等系统的原因。如果您是一个经验丰富的 MEF 开发人员,则可以跳过此部分。...最后,我将讨论如何将约定驱动的配置加入到应用程序模型中,以及它如何将使用 MEF 现成的 DI 准则变成一件非常简单的事情。

1.3K50
领券