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

MEF导入对我不起作用,但容器工作正常

MEF是Managed Extensibility Framework的缩写,是微软提供的一种用于实现插件式架构的技术。它可以帮助开发人员实现组件的解耦和动态加载,使系统具有更好的可扩展性和灵活性。

根据提供的问答内容,问题描述了MEF导入对某人无效的情况,但容器工作正常。根据这个问题,可以有以下几个方向进行分析和解决:

  1. 确保正确使用MEF的导入特性:首先需要检查代码中的MEF导入特性是否正确使用。在使用MEF时,我们需要使用[Import]特性来标记需要导入的组件。确保导入的组件被正确标记并且与容器的合约匹配。
  2. 确保MEF容器被正确初始化:在使用MEF时,需要确保MEF容器被正确初始化。容器初始化过程包括创建MEF容器实例、注册MEF目录和组件等。可以通过检查初始化过程的代码,确保容器被正确地初始化。
  3. 检查组件的依赖关系:当使用MEF导入组件时,需要确保组件的依赖关系被正确处理。如果某个组件依赖于其他组件,需要通过MEF导入特性将这些依赖关系声明出来,以确保组件可以正确导入。
  4. 检查组件的目录和程序集:MEF容器通过目录和程序集来查找和加载组件。需要确保目录和程序集的路径配置正确,确保容器可以找到需要导入的组件。

总结: MEF是一种用于实现插件式架构的技术,能够帮助开发人员实现组件的解耦和动态加载。对于MEF导入无效的情况,可以通过检查MEF导入特性的使用、MEF容器的初始化、组件的依赖关系和目录/程序集的配置来解决。详细了解MEF的相关信息和使用示例,可以参考腾讯云的产品文档:MEF 文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Caliburn.Micro Bootstrapper及IOC容器配置

大家好,又见面了,是你们的朋友全栈君。 如果想深入学习Caliburn.Micro,Bootstrapper和IOC容器配置是重中之重,一定要弄清楚,否则很难理解CM的工作方式。...默认的方式是一个很简单的让CM能正常工作的方式,但不是很好,建议用户还是使用自定义的IOC容器。...通常就用MEF作为CM的IOC容器。在MEF中所有export部件都会被作为插件导入到container中,通过container也可以访问每个export对象。...我们在把MEF作为IOC容器的时候,通常只需要把类标记为export导入到container就可以了,当然不标记为export的类是无法导入到container的。...事实上我们在用MEF作为IOC容器时一般只把ViewModel导入容器,View不作处理的。所以,一定要记得把View所在的程序集加入到AssemblySource。

90930

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

等,这些第三方工具各不相同,功能大体都相同,大都需要事先对接口与实现进行配对(通过代码或配置文件),然后由系统自动或手动来通过接口来获得相应实现类的实例,对象实例化的工作由IOC容器自动完成。...扩展之间也可以存在依赖关系,MEF则会自动将它们按照正确的顺序进行调用。MEF还提供了一些用来定位和加载可用扩展的方法。MEF允许使用附加元数据扩展进行标记,从而达到易于丰富的查询和筛选的目的。...工作原理 ? 简短说一下MEF工作原理,MEF的核心包括一个catalog和一个CompositionContainer。category用于发现扩展,而container用于协调创建和梳理依赖性。...MEF原理上很简单,找出有共同接口的导入、导出。然后找到把导出的实例化,赋给导入。说到底MEF就是找到合适的类实例化,把它交给导入。...如何声明一个部件-导入与导出 导出”是部件向容器中的其他部件提供的一个值,而“导入”是部件向要通过可用导出满足的容器提出的要求。

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

    MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互;同时MEF...说到底MEF就是找到合适的类实例化,把它交给导入。 使用 MEF 编写的可扩展应用程序会声明一个可由扩展组件填充的导入,而且还可能会声明导出,以便向扩展公开应用程序服务。 ...需要在关闭时执行工作的部件和需要释放资源的部件应照常为 .NET Framework 对象实现 IDisposable。 ...但是,由于容器创建并维护部件的引用,因此只有拥有部件的容器才应对其调用 Dispose 方法。 ...如果非共享导出调用此方法,将会从组合容器中移除该导出并将其释放。 仅由移除的导出使用的部件以及树中更深层的诸如此类部件将也会被移除并得到释放。 通过这种方式,不必释放组合窗口本身即可回收资源。

    70930

    使用 MEF 轻松实现云部署

    Joseph Fultz Chris Mabry 下载代码示例 过去几个月中,和一位同事一直在从事一个利用 Microsoft Extensibility Framework (MEF) 的项目。...您可能不时会发现自己在撰写工厂方法或在构造函数或所需初始化方法内创建依赖对象,借助 MEF 之类的框架,大部分此类工作不再是必需的了。...请注意,尽管我们在此处使用的是 MEF使用 Unity、Castle Windsor、StructureMap 或其他任何类似容器并按照相似结构应该会取得相同的结果,主要差异体现在语法和类型注册语义上...这要求在上载时 blob 设置 etag。此外,您可以通过存储上次更新时间和应用 IfModifiedSince 的 AccessCondition,对重新生成 MEF 容器的更新方面进行优化。...使用 MEF 之类的框架有许多原因,这有点超出了我们在本文中重点介绍的功能。

    1.3K70

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

    MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互;同时MEF...说到底MEF就是找到合适的类实例化,把它交给导入。 使用 MEF 编写的可扩展应用程序会声明一个可由扩展组件填充的导入,而且还可能会声明导出,以便向扩展公开应用程序服务。 ...需要在关闭时执行工作的部件和需要释放资源的部件应照常为 .NET Framework 对象实现 IDisposable。 ...但是,由于容器创建并维护部件的引用,因此只有拥有部件的容器才应对其调用 Dispose 方法。 ...如果非共享导出调用此方法,将会从组合容器中移除该导出并将其释放。 仅由移除的导出使用的部件以及树中更深层的诸如此类部件将也会被移除并得到释放。 通过这种方式,不必释放组合窗口本身即可回收资源。

    68620

    无特性的 MEF 配置方法

    MEF 语义;如果您不清楚其中的任何代码的工作原理,请参阅 MSDN 库页面“Managed Extensibility Framework 概述”(bit.ly/JLJl8y),其中详细介绍了 MEF...约定驱动的配置 现在,已具有正常工作的代码特性化版本,想说明如何使用 RegistrationBuilder 将这些代码段转换为约定驱动的模型。让我们先删除所有添加了 MEF 特性的类。...一旦规则具有例外情况,保持约定的开销可能是非常大的,特性可以帮助覆盖约定。让我们假设在 ResourceInformation 类中添加一个新资源,其名称并不符合约定,如图 10 所示。...无缝开发 在本文中,介绍了约定驱动的配置,这是 MEF 的一个新功能,它是在 RegistrationBuilder 类中公开的,可以大大简化与 MEF 有关的开发工作。...经验表明,无论什么代码“正常工作”,在开始遵循指定的约定时,您可以获得在应用程序中使用 MEF 的好处,而无需亲自编写一行 MEF 代码。

    1.3K50

    .NET Core 和 .NET Framework 中的 MEF2

    使用 MEF2 开发 MEF 完全使用特性来管理容器中的依赖,微软称之为 Attributed Programming Model,并辅以广告——不需要配置文件的依赖注入容器。...所以,使用特性来标记依赖关系就成了 MEF 的招牌依赖管理方式。 使用方法将分为两个部分来讲,最容易的是业务代码,给开发团队中所有成员使用的代码。...但是,为了方便大家理解,在这一节将只说 MEF2 最原生的使用方法。框架那一节才会说明如何自定义业务代码的写法。...框架代码 框架代码也分为两个部分:一个部分是初始化,初始化后可以创建一个依赖注入容器;另一个部分是管理依赖,将使用之前初始化好的依赖注入容器进行管理。...欢迎转载、使用、重新发布,务必保留文章署名 吕毅 (包含链接: https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布

    1.4K10

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

    依赖注入 使用Prism类库搭建的应用程序需要使用依赖注入容器 Prism支持Unity和MEF依赖注入容器 并且允许使用其他的依赖注入容器 引导程序的部分工作就是装配这个容器 并为容器注册类型 Prism...类库包含UnityBootstrapper和MefBootstrapper类 这两个类实现了使用Unity或MEF所必须的功能 除了在前面的插图中展示的步骤 这两个类型还添加了针对各自容器的特殊步骤 创建框架...判断是否系统内部集成的日志服务足够你使用了, 如果不够你要自己创建你自己的日志服务 决定系统如何发现模块 使用目录查找、配置文件、或者xaml来加载模块 (模块必须由明确的特性代码标记) 关键场景 指定有序的启动环节 你创建...为你的应用程序创建Bootstrapper 无论你是选择使用Unity还是MEF作为你的依赖注入容器 为你的应用程序创建一个简单的bootstrapper 都是非常容易的 你可以创建一个派生自MefBootstrapper...你需要执行初始化的几个步骤来确定你的框架画面可以被正常显示 开发WPF和开发Silverlight应用程序 InitializeShell方法的实现方式也会不同 对于Silverlight应用程序来说

    79820

    Ioc模式和MEF

    选择MEF方式 .net中可用的IOC容器非常多,如 CastleWindsor,Unity,Autofac,ObjectBuilder,StructureMap,Spring.Net等,这些第三方工具各不相同...,功能大体都相同,大都需要事先对接口与实现进行配对(通过代码或配置文件),然后由系统自动或手动来通过接口来获得相应实现类的实例,对象实例化的工作由IOC容器自动完成。   ...MEF相对于上面的这些IOC容器有什么优势呢?...下面是推荐的理由: 1..net4.0 自带:MEF的功能在 System.ComponentModel.Composition.dll 程序集中,直接引用即可使用,不用安装第三方组件 2.0 配置:...MEF是不需要使用配置文件或代码对接口与实现进行一一配对的,只需要简单的使用几个Attribute特性,就能自动完成源与目标的配对工作 3.自动化:系统初始化时自动遍历程序目录或指定文件夹下的dll,根据程序集中接口与类的特定

    49220

    C# MEF入门讲解

    MEF入门之不求甚解,力求简单能讲明白(一) 起因:工作需要针对不同类型的文件做不同的处理。打个比方,txt文件,直接打印,doc文件,直接发email,jpg文件,上传xxx相册站点。...要干掉工厂里面的if,则必须要请出ioc容器了。MEF就是微软自家的托管可扩展框架,在这里被我用成了ioc容器,其他的功能,不求甚解。 我们先拿MEF练练手,再应用到具体的项目中。...我们已经成功的创建了三个类的实例,主程序并没有引用这个类库。 也可以说,我们将类的实例成功的注入到了主程序。...从这个小例子,我们可以学到,使用MEF三步骤:1、导出所需的类型(部件),2、在合适的目录(AssemblyCatalog、DirectoryCatalog)中查找。3、将找到的部件加入到容器。...之后你就可以使用容器中的已经New好的实例了。

    72420

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

    “我们已经与MEF做了很多工作来定义API。我们需要完成这项工作,这样我们就不必与20个不同的供应商做20次关于API定义的事情。...想我们缺少的是——我们做了很多工作,每个人都在背后支持我们,但是大家或许觉得我们的工作速度有点慢。“ “为了每个人都可以方便地使用它,我们需要完成这项工作。...虽然LSO Sonata API正在等待最终的审核,Hubbard表示,MEF成员公司目前能够使用几种实验性的LSO Sonata API。...虽然LSO Sonata API目前专注于运营商之间的API,TM论坛正在开展工作,准备定义一款可用于企业对消费者,企业企业的API。...MEF和TM论坛一直在合作开发API,以加快开发速度并避免其他组织或公司做重复工作。 所有这些又回到了MEF正在进行的LSO API工作

    60920

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

    我们确实关注所有开源软件,但我没有听到团队ONAP刚刚发布的新功能的任何反馈。 FierceTelecom:CenturyLink是否是任何开源社区的成员?...Simlot:感谢您提出MEF和LSO,认为他们正在做的一些工作非常好。特别是他们的API,认为他们是Sonata和Interlude之间合作的成果。...喜欢它们原因是,现在并不是所有的服务都能在网上为我们使用,而他们的工作却能帮助我们改变这一现状。我们有一些客户,我们没有接触到他们,但他们想从我们那里获得服务。...在大多数情况下,可以在我们的网络上整天进行虚拟化,并在5分钟内启动服务,如果另一端是在其他人的网络上,或在合作伙伴的网络上,无法与该网络通信并要求他们提供这项服务,然后我们又回到这个120天的旧业务来提供服务...认为MEF所做的工作非常棒,因为我们需要让所有不同服务提供商采用这些API,以便我们能够为客户实现SDN和NFV的承诺。

    31130

    Prism教程二: Bootstrapper

    大家好,又见面了,是你们的朋友全栈君。 在程序中使用框架必然要有一个切入点,框架会在这里进行初始化,处理相关配置等。在Prism中扮演这一角色的就是Bootstrapper。...和MefBootstrapper,分别使用Unity和Mef来实现依赖注入。...而我们需要做的工作就是在这两个类中选择一个适合自己的,稍微配置一下就可以了。...Prism中内置了Unity和Mef的支持,所以有这两种预定义好的Bootstrapper:UnityBootstrapper和MefBootstrapper,其中分别采用UnityContainer...所以不管使用什么样的容器,都需要提供一个实现了IServiceLocator接口的适配器,如果使用Unity要提供UnityServiceLocator,使用Mef就要提供MefServiceLocator

    96720

    菜鸟驿站:学习SDNNFV路上遇到的术语(一)

    MEF为完成跨越混合网络基础设施的端到端的业务管理提出的新方法和新架构。利用产品、服务、资源的抽象化屏蔽了下面网络的复杂性。...MEF:城域以太网论坛(MEF)是一个专注于解决城域网以太网技术问题的非盈利性组织。...MEF主要从四个方面展开技术工作:城域以太网的架构、城域以太网提供的业务、城域以太网的保护和QoS、城域以太网的管理。MEF的主旨是促进光学以太网作为城域网的选择技术在世界范围内的广泛应用。...Docker容器:是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可实现虚拟化。...NETCONF:IETF在2003年5月成立了Netconf工作组,该工作组主要是为了提出一个全新的基于XML的网络配置(NETCONF)协议而成立的。

    1.2K50

    使用MEF实现通用参数设置

    这里留个疑问,是如何知道前台界面渲染的时候该用radio,text,password中哪种控件的呢?...回到顶部 实现思路  通用配置管理达到以下目标    1.使用简单      通过添加配置项类,无需额外操作即可完成工作    2.功能强大,方便拓展     界面等其它工作都已经由框架完成,对于个性化的配置比如需要实现校验...,或者额外工作,可以通过beforesave,aftersave进行拓展    3.界面美观 基于bootstrap实现,整体效果还是挺不错的  系统的类图 ?...MefConfig.TryResolve(); configManager.Init();  MefConfig.Init()               方法初始化组合容器...导入器读取所有配置项组,存储在静态变量 _allConfig 中     /// /// 初始化系统参数配置信息 ///

    1K91

    2016年SDNNFV开源三大趋势

    在软件定义网络(SDN)和网络功能虚拟化(NFV)开源工作的头几年,开源工作的目标相对模糊,今年开源工作的进展有了3个明显的趋势。 首先,CORD项目变得越来越受业界的欢迎。...在CORD成为一个单独的项目之前,已经有数家电信公司因为CORD项目感兴趣而加入了ONOS项目。...包括Verizon、AT&T、中国联通、NTT、SKT,Verizon表示将专注于移动CORD(M-CORD)5G的推动作用。...CORD来说,接入技术并不是CORD最关心的。AT&T的流量可以通过GPON或DSL进行传输,Comcast的流量可以通过HFC电缆传输。...LSO更受重视 MEF首先开始探讨关于生命周期服务编排(LSO),吸引了业界的一些目光。3月份,MEF发布了LSO参考架构。

    67360

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

    例如,假设我们有一个ViewModel,它需要异步调用一个web服务,然后它需要获取该结果,其进行一些处理,并异步调用另一个web服务。...但是yield语法允许您以顺序方式编写所有代码,将原始工作流保留为可读性和声明性更强的结构。...您不需要了解很多关于MEF或DeploymentCatalog的知识就可以获得外卖。...在CM执行结果之前,它会将结果传递给IoC.build方法,从而使容器有机会通过属性将依赖项推入。这允许您在视图模型中正常创建它们,同时仍然允许它们依赖于应用程序服务。...您还可以注入容器,但在本例中,选择在内部使用IoC静态类。一般来说,你应该避免直接从容器中取出东西。但是,认为在基础架构代码(如ShowScreen IResult)内部执行时,这是可以接受的。

    48720
    领券