问题标签 [mef]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1350 浏览

c# - 从客户端 PC 上无法浏览的网络共享动态加载 .dll - WCF?

我正在使用 PnP 复合应用程序指南构建 WPF 应用程序。该应用程序将在我们的 Intranet 中本地运行。

模块将根据用户角色动态加载。因此,应用程序必须可以通过网络共享访问这些模块,从而可以从客户端计算机访问这些模块。

我想做的是将所有模块 .dll 保存在工作人员无法访问的位置,但仍然能够在需要时以及当前用户经过身份验证以使用该模块时将它们提供给复合应用程序。

我的想法是通过从 WCF 服务流式传输 .dll 来加载它们,WCF 服务(在服务器上)可以访问 .dll 存储库,但没有任何客户端机器可以访问它。身份验证也将由服务处理。

我怀疑我可能以某种方式使事情过于复杂。

这是否可以通过简单的文件系统配置并在访问共享文件夹时以编程方式传递凭据来完成?如果我这样做,是否只会向调用应用程序授予访问权限,还是登录用户现在能够导航到共享文件夹?

无论如何,这是 MEF 或您知道的任何其他项目的已解决问题吗?(我希望这不值得 LMGTFY ——我无法想出任何东西。)

0 投票
1 回答
2573 浏览

wpf - 使用 ImportingConstructorAttribute

我正在尝试使用 MEF 和 MVVM 构建 WPF 应用程序。我正在导出我的 ViewModel,但我希望我的 ViewModel 接受构造函数中的模型参数:我将创建一个特定的模型并将其提供给 ViewModel 的构造函数。我试图了解 ImportingConstructorAttribute 的工作原理,这似乎是拥有自定义构造函数的方式。但我不知道如何使用它。

有人可以举一个使用 ImportingConstructorAttribute 的工作示例吗?

提前致谢

0 投票
1 回答
4038 浏览

c# - 编写 Visual Studio 2010 插件,想在代码编辑器中显示类似 Resharper 的工具箱

我想为 Visual Studio 2010 编写一个插件,但实际上我遇到了一些问题。我想做的事情似乎很简单,我希望在代码编辑器中选择文本时出现一个小工具箱,比如在 Resharper 中(带菜单的小笔,有助于重构)或者像这里:

http://www.axtools.com/products-vs2010-extensions.php?tab=selection-popup

我想知道 :

  1. 是否有有助于启动的 Visual Studio 模板?我尝试使用“编辑器视口装饰”,但我不确定。

  2. 我应该从工具箱开始设计还是可以从系统工具箱中显示一些按钮?在链接中的 axtools 插件中,它是定制工具箱还是系统工具箱?

  3. 如何检测文本被选中?

我暂时没有更多问题。我是一名网络开发人员,所以编写一个 Visual Studio 插件对我来说是新事物。

提前致谢。

0 投票
1 回答
263 浏览

visual-studio - 如何在新的 VS2010 编辑器可扩展性中创建编辑器选项

VS2010 编辑器的扩展点列表提到了创建 EditorOptionDefinitions 以及一个小示例。当我尝试这样做时,我在 VS2010 UI 的任何地方都找不到选项。如何创建这些以使它们出现在 UI 中?

0 投票
2 回答
675 浏览

wpf - ViewModel 沟通问题

想象一下,我有一个 UserControl,它显示一个停车场(我最喜欢的类比),里面有不同颜色的汽车。您可以选择一辆车,并在单独的 UserControl(在单独的项目中)显示所选汽车的统计信息。

现在用户想要在汽车统计信息 UC 上的一个按钮,“下一辆相同颜色的汽车”。选中后,它应该以相同的颜色显示停车场上下一辆车的统计信息(从上到下,从左到右)。

因此,如果这是有道理的,那么问题就来了。

我目前正在使用 MVVM Lite 将包含所选汽车的消息从停车场 UC 发送到汽车统计信息 UC。一切都很好。但是现在,有了这个新功能请求,我该怎么办?统计 UC 需要从停车场 UC 请求下一辆车。

这会是使用依赖注入的好地方吗?还是有其他更好的方法?

0 投票
2 回答
1987 浏览

wpf - 如何将 MVVM 和 MEF 与 DataTemplate 一起使用?

我正在尝试在我的应用程序中的一个新项目中使用 MEF。事情在主应用程序级别工作,但在这个单独的项目中,其程序集包含在主应用程序中(它的用户控件)我想知道一些事情......如果我有一个用户控件,并且其中我有以下内容:

在我的 MyViewModel 中,我导出了一些东西,并且程序集似乎组合得很好(我使用 CompositionInfoTextFormatter 来检查这一点)。但是我的虚拟机没有被 MEF 实例化,或者至少构造函数永远不会被调用。当它被调用时,它似乎来自 WPF 框架,而不是 MEF。

什么是正确的方法 A)在 xaml 中,将我的 VM 与其视图与 MEF 相关联(如果与上面不同)和 B)我如何实例化我的 VM 以便 MEF 控制它,因此导出和导入工作?

目前他们没有,这就是为什么我试图理解这一切:)

0 投票
1 回答
1486 浏览

definition - 什么是托管可扩展性框架 (MEF)?

我用谷歌搜索,只得到了几篇关于 MEF 的文章。有人请简要解释一下:

  • 什么是管理可扩展性框架?
  • 出于什么目的需要它?
  • 我怎样才能开始使用它?

任何一步一步的指导都会有所帮助,谢谢!

0 投票
2 回答
5853 浏览

c# - 通过 MEF 容器处理组件?

我使用 MEF 将接口映射到实现类作为 DI 的一种方式。例如,我将 Import 属性用于接口,将 Export 用于实现类。我的理解是MEF框架将创建实现类实例并将它们保存在MEF的容器中以供使用或自动注入。

我的一些实现类实现了 IDispose 接口。由于实例是由 MEF 创建的,我认为我应该让 MEF 调用组件的 Dispose 方法,如果它们在 MEF 退出时是一次性的。例如,在我的应用程序中,我持有对 MEF 容器的引用。当应用程序终止时,我调用容器的 Dispose 方法。问题是我的组件的 Dispose 从未被调用。

下面是一些关于导入和导出映射的示例代码:

以类似的方式还有许多其他映射的其他导入和导出定义。我以这种方式构造映射,以便 MEF 了解关系以及如何创建映射实例的方式。以下是我的应用程序中使用 AssemblyCatalog 加载映射的一些代码:

这里的实例有许多其他由 MEF 通过 CTOR 注入的组件。这些组件还包含由 MEF 注入的其他组件。问题在于,由于某些实例是共享的,因此很难决定何时处置组件。如果我在其中一个上调用 Dispose,这将导致其他人无法使用它。正如您在这张图片中看到的,实例由 MEF 创建并注入到我的应用程序类中。每个组件不应该对其他组件有任何了解,并且应该使用注入的组件来完成工作。

我不确定当应用程序终止或容器被处置时,我应该在哪里/如何指示 MEF 在组件上调用 Dispose?我应该在组件上调用 Dispose 吗?我认为这是不对的,因为 MEF 创建它们并根据需要将它们注入客户端。客户在完成工作时不应调用他们的 Dispose。

0 投票
1 回答
1580 浏览

dependency-injection - MEF 和单独的接口组件导致“每个类的接口”

尤其是 DI/IoC 和 MEF,我的脚都湿了。

我有一个 Web 应用程序,它有两种类型的部分(也许有一天会更多),这些部分由需要访问整个环境的接口定义。该应用程序有一个列表,其中包含由 MEF 组成的每种类型的具体实现。

环境包括:

  • 几个存储库
  • 当前申请请求
  • 渲染引擎
  • 导航引擎
  • 加上一些静态实用程序类

如何将接口定义放在单独的程序集中,同时指定环境注入?

显然,我不能只引用主程序集,因为它需要引用合同程序集并且我不能创建循环引用。

看来我需要为每个环境类及其公开可用的类型等创建一个接口......必须有更好的方法吗?!

也许我也错过了这里明显的更大缺陷,如果有人可以为我指出吗?

0 投票
1 回答
704 浏览

asp.net-mvc - 使用 Asp.net MVC 在 mef 插件中公开 WCF

我想实现下一个场景:

ASP.Net MVC 以与hammett描述的类似方式与 MEF 一起工作。

我需要允许的一件事是 MEF 插件包含 WCF 服务(或 asmx 服务 - 后备词兼容性)。

我可以使用什么方法(如果有的话)使 MVC 网站获取 Web 服务并将其公开:http://websitename/MefPlugin/Service1.mvc