问题标签 [structuremap4]

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 投票
1 回答
3350 浏览

asp.net-mvc - StructureMap:当前上下文中不存在名称“ObjectFactory”

我正在使用 StructureMap 来解决依赖关系,它适用于旧版本。但是在更新 StructureMap 版本 4.2.0.40 后,我遇到了这个错误。

ObjectFactory 现在在新版本中已过时。 那么如何修改下面的逻辑以适应更新版本。

引导程序.cs

0 投票
1 回答
702 浏览

c# - StructureMap 中的 C# lambda

使用 StructureMap 4,而我是 C# 新手,我想知道为什么会出现编译错误:

是否有一个紧凑的语法,我不需要f1变量 (2) 并且没有重复类型 (3) 的演员表吗?

0 投票
1 回答
231 浏览

c# - Asp.Net Core RC1 -> RTM DI 更改 - 从服务中删除

我正在使用带有 AspNet Core 1.0 RTM 的结构图。看来他们已经使用属性上的 FromServices 属性删除了。这会破坏下面的代码,因为我现在无法注入 ClaimsPrincipal。我不确定如何让 DI 系统获取此属性。我是否需要创建自定义 InputFormatter 或其他东西。要让它再次工作似乎需要做很多工作。

启动.cs

模型.cs

测试控制器.cs

0 投票
0 回答
336 浏览

c# - StructureMap AOP 动态代理

我正在尝试使用 StructureMap 和 Castle.Core 实现 AOP。我正在使用最新版本。

我可以使用默认构造函数来实现它,但是我需要将记录器注入到 IInterceptor 的构造函数中。我怎样才能做到这一点。

0 投票
1 回答
458 浏览

c# - 我在哪里为 StructureMap 嵌套容器注册 HttpContextBase?

我是 IoC 的新手,并将 Nuget 包安装StructureMap.MVC5到我的 MVC 项目中。
我正在尝试注册以下内容:
For<HttpContextBase>().Use(() => new HttpContextWrapper(HttpContext.Current))

根据我正在阅读的内容,我需要在嵌套容器中引用它,并且我StructureMapDependencyScope.cs在包随附的文件中看到对嵌套容器的引用。但是,我不知道在哪里/如何向它注册这个 HttpContextBase。

我尝试从这样的StructuremapMvc.cs文件中注册它:

但这行不通。我HttpContextStructureMapDependencyScope.cs.

0 投票
0 回答
15 浏览

structuremap4 - 具有特定依赖关系的结构映射对象引用

我是结构图的新手。我想根据用户输入获取具有“master”或“visa”依赖项的 Shopper 类对象。在下面的代码中,我从 ICreditCard 创建了两个具体类 MasterCard 和 Visa。我正在注入 ICreditCard 的依赖项,但是当基于用户的选项执行代码时,我想将 MasterCard 或 Visa 依赖注入 Shopper 类并获取该 Shopper 类对象的引用。

如果可能的话,有人可以告诉我该怎么做。我还想知道我是否想在其他类中初始化对象然后怎么做(是通过公开返回容器对象的方法吗?)

0 投票
1 回答
498 浏览

asp.net-core - 使用 asp.net 核心配置每个请求/嵌套容器 StructureMap

我试图根据每个请求来确定我的服务范围,但我注入的服务似乎总是限定在父/根容器的范围内,后续请求会看到上一个请求的状态。

我在我的启动类中设置了一个自定义 StructureMap 容器

在注册表中注册服务;

然后连接以下中间件

关于我缺少什么的任何指示?谢谢

0 投票
1 回答
435 浏览

c# - 使用 StructureMap 中的 AssembliesFromPath 会引发 MissingMethodException

我正在尝试扫描我的主项目的子文件夹中的所有程序集,然后将包含的注册表添加到我的主注册表中,以便在必要时覆盖默认注册表条目并拦截依赖注入的类型。

为此,我创建了以下注册表

我打算像这样添加到我的主容器中:

我现在面临的问题是我在使用时收到此错误AssembliesFromPath并且我不知道如何解决它:

System.MissingMethodException:找不到方法:'Void StructureMap.Graph.IAssemblyScanner.AssembliesFromPath(System.String)'。

谷歌搜索建议我应该使用 namespace StructureMap.Graph,但这并没有解决问题。这是我的 using 语句,其中只有StructureMapVisual Studio 没有变灰(例如标记为非冗余)(我试图找到丢失的参考,但没有任何帮助):

有什么建议,我应该尝试什么?!

更新:

  1. 请注意,当我只用 注释掉这一行时AssembliesFromPath,解决方案运行得很好,尽管LookForRegistries它与AssembliesFromPath.
  2. AssembliesFromApplicationBaseDirectory给我同样的问题。
0 投票
1 回答
130 浏览

c# - 为什么在这种情况下我的插件类型只被部分注册?

我正在尝试按照此处建议的实现为我们的 WPF 程序实现插件架构。我希望我的插件位于与主程序文件夹不同的文件夹中。我已经让它只能部分工作。这是代码:

该计划是为每个插件提供自己的 StructureMap 注册表以覆盖默认的 StructureMap 注册表。

我目前正在使用的插件具有以下注册表,如您所见,我正在覆盖注册表IPrintProgramExecutor以拦截和使用插件类型AutomationController按预期工作:

AutomationPlugin目前是这个存根:

IPluginBase

添加注册表的类是这样的,pluginPath扩展文件夹的路径在哪里:

使用上面的代码实际绑定插件注册表的类是这样的:

现在,如上所述,插件类型的拦截IPrintProgramExecutor按预期工作。但由于某种原因container.Model.GetAllPossible<IPluginBase>()container.WhatDoIHave(typeof(IPluginBase))并没有找到 plugin-type 的任何注册类型IPluginBase。我已经尝试调用这些方法,IPrintProgramExecutor并且肯定它们返回了具体类型。找了好久的原因,没找到。

任何想法为什么?这是否与我打了两次电话的事实有关,也许与我第一次打电话时container.Configure(...)已经注册了一些东西有关?非常感谢您的帮助!IPringProgramExecutorcontainer.Configure(...)

更新:

  1. 切换到我的笔记本电脑后,以前有效的拦截不再有效。此外,我现在遇到一个异常,即PluginRegistry找不到我尝试注册的程序集之一:

StructureMap.StructureMapException:无法为注册表类型“Extensions.Automation.PluginRegistry”创建实例。详情请查看内部异常---> System.Reflection.TargetInvocationException: 异常已被调用的目标抛出。---> System.IO.FileNotFoundException:无法加载文件或程序集“Automation.Servers.Interfaces,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。在 Extensions.Automation.PluginRegistry..ctor() ...

总而言之,这似乎是一个我无法弄清楚的路径问题。我怀疑,在运行时,程序会尝试从主路径加载插件注册表中的 DLL,但相应的 DLL/程序集驻留在扩展文件夹中。如何查看 StructureMap 尝试加载程序集Automation.Servers.Interfaces以进行调试的位置?希望有人可以帮助我。我正在慢慢失去它。

0 投票
1 回答
292 浏览

c# - 如何在 Structuremap 4.4 中设置覆盖注册

所以我有一个容器,我在其中添加了一个为类定义默认类型的注册表。

此注册表是在应用程序初始化期间在 Web 服务启动时添加的。在添加用于应用程序的所有注册表后,我需要直接覆盖Foo类的注册。所以:

当我从我的容器中检索这个实例时

我现在要回来了null。如果我使用获取所有实例:

我得到两个结果。每个注册一个。这是有道理的。

但是,如果我在第二次注册期间尝试清除注册:

这仍然返回null。我似乎在这里遗漏了一些东西。我希望这会清除所有注册Foo并使用我最后注册的实例。

任何帮助,将不胜感激。提前致谢!