关于MEF通过构造函数导出的问题

问题描述

关于MEF通过构造函数导出的问题

比如

    [Export]
    class A {

    }

    [Export]
    class B{
      [ImportingConstructor]
      public B(A a){
      }
    }

我想在class C里导出B 能不能在C里用指定的A去实例化B呢 ?

时间: 2024-08-30 08:02:20

关于MEF通过构造函数导出的问题的相关文章

MEF程序设计指南五

迟延(Lazy)加载导出部件(Export Part)与元数据(Metadata) MEF中使用导出与导入,实质上就是对一个对象的实例化的过程,通过MEF的特性降低了对象的直接依赖,从而让系统的设计达到一种高 灵活.高扩展性的效果.在具体的设计开发中,存在着某些对象是不需要在系统运行或者的附属对象初始化的时候进行实例化的,仅仅只 需要在需要使用到他的时候才会进行实例化,从系统的上来说这也是提高系统性能的一种可行的实现方式,这种方式就可以理解为对象的 迟延初始化,或者叫迟延加载.MEF也对此使用场

MEF程序设计指南一:在应用程序中宿主MEF

在应用程序中宿主MEF其实非常简单,只需要创建一个组合容器对象(CompositionContainer)的实例,然后将需要组合的部件(Parts) 和当前宿主程序添加到容器中即可.首先需要添加MEF框架的引用,既 System.ComponentModel.Composition.dll,详细如下代码块: private void Compose() { var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); va

Node.js编写组件的三种实现方式_node.js

首先介绍使用v8 API跟使用swig框架的不同: (1)v8 API方式为官方提供的原生方法,功能强大而完善,缺点是需要熟悉v8 API,编写起来比较麻烦,是js强相关的,不容易支持其它脚本语言. (2)swig为第三方支持,一个强大的组件开发工具,支持为python.lua.js等多种常见脚本语言生成C++组件包装代码,swig使用者只需要编写C++代码和swig配置文件即可开发各种脚本语言的C++组件,不需要了解各种脚本语言的组件开发框架,缺点是不支持javascript的回调,文档和de

Node.js模块加载详解_node.js

JavaScript是世界上使用频率最高的编程语言之一,它是Web世界的通用语言,被所有浏览器所使用.JavaScript的诞生要追溯到Netscape那个时代,它的核心内容被仓促的开发出来,用以对抗Microsoft,参与当时白热化的浏览器大战.由于过早的发布,无可避免的造成了它的一些不太好的特性. 尽管它的开发时间很短,但是JavaScript依然具备了很多强大的特性,不过,每个脚本共享一个全局命名空间这个特性除外. 一旦Web页面加载了JavaScript代码,它就会被注入到全局命名空间,

实战MEF(3)只导出类的成员

通过前面两篇文章的介绍,相信各位会明白MEF中有不少实用价值.上一文中我们也讨论了导入与导 出,对于导出导入,今天我们再深入一点点,嗯,只是深入一点点而已,不会很难的,请大家务必放心 ,如果大家觉得看文章枯燥,不妨一边喝牛奶一边阅读. 上一文中我们都是把整个类型(整个类 )进行导出,不过有时候,我们可能会考虑只导出类的某些成员,比如某个属性或某个字段等. 我们还是少说理论,免得大家喝不下牛奶,还是直接上菜吧.为了便于测试,以下示例把组件都写在当 前程序集中,也就是在同一个项目,然后用Assemb

实战MEF(2)导出及导入

上一文中,我们大致明白了,利用MEF框架实现自动扫描并组装扩展组件的思路.本文我们继续前进,从最初的定义公共接口开始,一步步学会如何使用MEF. 在上一文中我们知道,对于每一个实现了公共规范的扩展组件,都需要进行导出,随后我们的主应用程序文件中会自动进行组装.这便产生了一个疑问:为什么需要导出? 如果大家还记得,以前我们用VC++写.dll文件时,都会把需要提供给别人调用的函数标记为导出函数,这样别人才能调用我们编写的函数.就好比我们的家,我们一般会有客厅,既然叫客厅,当然是展现给客人看的.有客

MEF程序设计指南四:使用MEF声明导出(Exports)与导入(Imports)

在MEF中,使用[System.ComponentModel.Composition.ExportAttribute]支持多种级别的导出部件配置,包括类.字段.属性以及方法 级别的导出部件,通过查看ExportAttribute的源代码就知道ExportAttribute被定义为 Attribute,并为其设置了使用范围. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA

C#可扩展编程之MEF学习笔记(二):MEF的导出(Export)和导入(Import)

上一篇学习完了MEF的基础知识,编写了一个简单的DEMO,接下来接着上篇的内容继续学习,如果没有看过上一篇的内容, 请阅读:http://www.cnblogs.com/yunfeifei/p/3922668.html. 下面我们来主要讲解一下MEF中的导入和导出,还是上一篇的代码(这篇中,我还会贴出完整的代码),修改Program的代码如下: using System; using System.Collections.Generic; using System.Linq; using Sys

实战MEF(5)导出元数据

如何理解元数据 我们可以把元数据理解为随类型一起导出的附加信息.有时候我们会考虑, 把元数据随类型一并导出,增加一些说明,使得我们在导入的时候,可以多一些筛选条件. 默 认的类型导出带有元数据吗 上面的内容我说得比较简洁,也许您不是很理解,不要紧,在编程 里面,很多东西我们都是写了代码后才理解的.所以,我的理论功底比较差,最不擅长的就是长篇大论 ,还是从代码中看吧. 我们首先要弄清楚一下问题:在我没有手动去添加元数据的默认导出类型 ,是否带有元数据.为了使代码更简单,这里我直接把一个类导出,而不