问题标签 [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 投票
3 回答
4148 浏览

mef - 我可以使用 MEF 控制对象创建吗?

我需要向我们现有的代码添加一些扩展点,并且我一直将 MEF 视为一种可能的解决方案。我们有一个 IRandomNumberGenerator 接口,带有一个我们希望可交换的默认实现(ConcreteRNG)。这听起来像是 MEF 的理想方案,但我在实例化随机数生成器的方式上遇到了问题。我们当前的代码如下所示:

换句话说,消费者负责实例化它需要的 RNG,包括提供每个实例所需的种子。

我想做的是让 MEF 发现并实例化具体的 RNG 实现(使用 DirectoryCatalog)。我不确定如何实现这一目标。我可以公开一个 Generators 属性并将其标记为 [Import],但是如何提供所需的种子?

我还缺少其他方法吗?

0 投票
2 回答
7488 浏览

c# - 仅给定 Type 实例从 MEF 容器获取导出

我有一个场景,我必须从我的 CompositionContainer 实例中获取导出,但我只有一个可以使用的类型;我在编译时不知道类型,因此我无法以正常的通用方式检索导出的对象。

通常你会这样做:

但就我而言,我有这个:

有任何想法吗?

0 投票
1 回答
2742 浏览

dependency-injection - 使用 MEF 进行 DI/IoC 的资源和示例

我搜索得很高,并寻找有关使用 MEF 进行 DI 的示例。我知道它不是 DI,但从我听到的(真的在播客中听到)可以这样使用它……但我找不到任何博客文章或示例。

我已经在这个项目中使用了 MEF(以支持插件)并且认为也可以很好地利用 DI。

也许我在叫错树?

0 投票
2 回答
747 浏览

c# - 如何在 .Net 4.0 中将 DLR 与 MEF 一起使用?

MEF 团队承诺 MEF 将支持 .Net 4.0 中的 DLR 插件。它是否已经发生并且我可以 [Import] 一些 IronPython 对象?

如果是,任何指向该主题的链接都会有所帮助。

0 投票
2 回答
98 浏览

.net - 正则表达式在编辑器扩展中爆炸

我正在为我的 Django 渲染引擎构建一个 Visual Studio 编辑器扩展。到目前为止,我刚刚开始使用它,它真的很简单,并且到目前为止它完成了我期望它做的事情 - 突出显示等等。或者直到我开始添加解析逻辑。部分解析依赖于正则表达式。这是我的问题:无论我如何尝试 - 静态变量、成员变量 - 任何东西,每次我调用 new Regex 它都会给我“对象未设置为实例”异常。在 MEF 中使用正则表达式 (RegEx) 有问题吗?

干得好:

使用 Regex 构造函数的行上的断点被击中就好了。下一个 F10 给出了例外

0 投票
1 回答
719 浏览

wpf - App.Current.MainWindow 在启动另一个对话框时发生变化?

启动应用程序时,我正在从 MEF 插件启动一个新对话框。有人可以解释为什么这会改变App.Current.MainWindow从插件启动的对话框吗?我怎样才能防止这种情况发生?

0 投票
1 回答
5637 浏览

c# - 如果在目录中找到新的 DLL,则在 DirectoryCatalog 上调用 Refresh() 会引发 ChangeRejectedException

我正在试验MEF并创建了一个测试程序来调用实现某些给定接口的“插件”,如下所示:

我创建了一个示例控制台程序,它从它自己的程序集中加载“插件”,如果找到的话,从一个放置额外 DLL 的目录中加载。无论插件目录为空(仅调用“本机”插件)还是具有兼容的 DLL,程序都可以正常工作。但是...如果在循环迭代之间添加了一个新的 DLL,DirectoryCatalog 的 Refresh() 方法会抛出一个 ChangeRejectedException,解释如下:

组成保持不变。由于以下错误,更改被拒绝: 合成产生了单个合成错误。下面提供了根本原因。查看 CompositionException.Errors 属性以获取更多详细信息。

1) 部分 'MEFTest.Program' 上的不可重组导入 'MEFTest.Program.ProberSet (ContractName="ProbeContract.IProbe")' 阻止了出口的变化。

该程序如下,后面是我尝试添加的 DLL 的代码。我究竟做错了什么?

插件。其他两个插件类似,唯一的区别是它们与主程序位于同一个程序集中:

0 投票
2 回答
668 浏览

c# - MEF(托管可扩展性框架)是否进行“鸭子”打字?

我有 2 个程序集:

组装 1:

组装 2:

我知道如何让它发挥作用。我可以向 MEF(托管可扩展性框架)询问对象,或者让它导出正确的 IWeapon 而不仅仅是按名称导出对象。

如果实现了所有接口点,MEF 可以为我输入“鸭子”并返回代理对象吗?

0 投票
2 回答
15358 浏览

.net - Visual Studio 2010 插件编写文章/教程?

有谁知道一些关于为 Visual Studio 2010 编写插件/插件的好文章/教程?

0 投票
2 回答
1009 浏览

wpf - 在一个项目中使用 MEF 和 Prism (CAL) 是否可能(并且合理)?

我目前正在使用 Prism (CAL) 进行 WPF 项目,我想知道在一个项目中同时使用 Prism 和 MEF 是否是个好主意。

我会使用 Prism 来实现模块化,使用 MEF 来实现可扩展性。我的项目是一个类似绘画的应用程序,因此 Prism 将提供模块分离(工具箱、画布作为模块等),MEF 将用于为要绘制的新形状(即矩形、圆形......)提供可扩展点。

这有意义吗,或者我可以仅使用 Prism 获得类似的功能吗?

在此先感谢和最好的问候,crischu