问题标签 [structuremap3]

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 回答
748 浏览

c# - Structuremap 3 构造函数,接受所有已注册类型/实例的列表

我有一个对象,它期望一个IEnumerable<IPluginType>作为它的构造函数的参数。我的容器配置中还有一行添加了 IPluginType 的所有实现者:

我已经通过 container.WhatDoIHave() 确认了预期的实施者已注册,但未填充 IEnumerable。

我想我有点乐观认为 Structuremap 会明白我的意思,我怎么能说出来?

0 投票
4 回答
746 浏览

c# - DI 框架如何解决具有多个配置的相同接口的依赖关系?

考虑下面的代码示例:

以及为此的 DI 配置:(提供了StructureMap代码片段)

比如说,在我的代码中,有时我使用MyInterfaceImplementor1,而在其他时候,我使用MyInterfaceImplementor2。我的问题是,DI 框架(StructureMap 或任何其他)将如何解决上述配置?此外,它将如何确定在何处返回MyInterfaceImplementor1的实例以及何时返回MyInterfaceImplementor2的实例?或者我在这里做错了什么?

0 投票
1 回答
313 浏览

structuremap3 - Structuremap 3 - 在应用程序启动时为所有请求缓存单个对象实例

有谁知道如何从结构图 3 开始在 Web 应用程序上缓存对象?单例方法是正确的方法(o.For().Singleton().Use()),如果是,它是否被缓存?

谢谢

0 投票
1 回答
315 浏览

c# - 在 Asp.net MVC 5 中使用 StructureMap 扫描程序集

我使用 StructureMap 进行依赖关系解析。

我有 2 个项目

  • Project.Web(网站)
  • Project.Web.DependencyResolution(主注册表位于此处,扫描从此处开始。)

我无法使用:

因为这无法找到位置并为装配提供了一个奇怪的路径。

为什么程序集找不到bin目录或项目发布/编译的目录?我使用 IIS 和 IIS Express

设置此结构的任何帮助/提示?谢谢 :)

0 投票
1 回答
231 浏览

c# - 动态类型和双重调度的奥秘

最近我遇到了一个有趣的问题,试图通过动态类型实现双重调度。

一点背景知识:在我的一个项目中,我使用 StructureMap 容器和动态类型作为在运行时调度方法调用的干净方式。将 StructureMap 容器更新到较新的版本 (3) 后,我的一些单元测试开始永远挂起。

为了重现这个问题,我创建了 2 个最大程度简化的单元测试:第一个测试永远挂在标有 (*) 的行上,第二个测试按预期通过。它们之间的唯一区别是第一个方法返回的是 StructureMap 的 LambdaInstance 类型的对象。

悬挂测试:

通过测试:

怎么可能?还是我只是累了需要睡觉?

无论如何,这是概念和教育问题,而不是愿意在特定图书馆中找到特定问题的解决方案。

UPDATE1:已验证 4.0 和 4.5 目标框架存在问题,已在 VS2010(SP1)、VS2013 中验证。

UPDATE2:简单的控制台应用程序也挂在同一行(所以,这不是测试运行器的问题):

我还在GitHub 上创建了独立示例。

0 投票
2 回答
39 浏览

c# - 依赖注入和实体

我有两个班级,并且有一对多的关系,如下所示

要向用户添加地址,我需要在 User 构造函数中启动 Addresses 属性为

这种情况是使用 DI 启动列表的好人选,还是我应该在构造函数中启动地址列表,如图所示。

0 投票
1 回答
3314 浏览

c# - 从 StructureMap 获得的 HttpContext 上的 Null 用户

好的,我之前的问题/设置有太多变量,所以我将其剥离为它的基本组件。

鉴于下面使用 StructureMap3 的代码...

在“监视”窗口中这怎么可能?

在此处输入图像描述


我有一个 Web 应用程序,我正在从 2.x 升级到使用 StructureMap 3.x,但我在特定依赖项上出现了奇怪的行为。

我有一个 ISecurityService,用于在用户请求页面时获取验证某些内容。该服务依赖于我称为 ICurrentUser 的小接口。类的实现非常简单,实际上它可以是一个结构。

这是通过使用以下代码的依赖注入获得的。

当请求进来时,我的站点范围的身份验证首先发生,这取决于ISecurityService. 这发生在 OWIN 内部,并且似乎在HttpContext.User填充之前发生,所以它是空的,就这样吧。

稍后,我有一个 ActionFilter,它通过 a 检查ISecurityService当前用户是否同意该站点的当前版本的使用条款,如果不是,他们将被重定向到页面以首先同意他们。

这一切在结构图 2.x 中运行良好。为了迁移到 StructureMap3,我安装了 Nuget 包 StructureMap.MVC5 来帮助我加快速度。

当我的代码到达我的 ActionFilter 中检查使用条款的行时,我有这个。

在里面CheckLoginAgreedToTermsOfUse(),我的实例CurrentUser是空的。即使它会成功,而且我在 getCurrentUser() 中的断点似乎永远不会被击中。这几乎就像已成定局,因为上次它是 null ,即使这次它会解决。

我有点困惑,为什么getCurrentUser()从来没有要求ISecurityService. 我什至尝试在我的连接上明确粘贴一个.LifecycleIs<UniquePerRequestLifecycle>()以进行处理ICurrentUser,但没有任何效果。

更新:好的,请注意,我已经开始使用下面接受的方法,虽然到目前为止效果很好,但它并没有解决我的核心问题。原来新的StructureMap.MVC5,基于StructureMap3,使用 NestedContainers。无论默认值是 Transient,它们的请求范围都是 NestedContainer 的生命周期。因此,当我第一次请求HttpContextBase时,它将为请求的其余部分返回相同的实例(即使在请求生命周期的后期,上下文已经改变。你需要要么不使用 NestedContainer (据我所知它会使事情复杂化 ASP.NET vNext),或者您明确设置For<>().Use<>()映射为每个请求提供一个新实例。请注意,每个 NestedContainer 的这个作用域会导致控制器以及 MVC 中的问题。虽然StructureMap.MVC5包用 处理这个ControllerConvention,但它不处理视图,递归视图或多次使用的视图也可能会给您带来问题。我仍在寻找 Views 问题的永久解决方案,目前我已恢复到DefaultContainer.

0 投票
1 回答
905 浏览

c# - StructureMap:将运行时参数传递给选定的构造函数

我想选择一个构造函数并传入运行时参数。我知道如何使用注册表提供的参数选择构造函数,并且我也知道如何提供运行时参数。但我看不到将两者结合在一起的方法。

班上:

我如何注册它(我知道这不起作用):

如果我可以注册它,这就是我将如何创建它并提供参数的方式:

提前致谢。

(注意:我正在寻找一个 StructureMap 3.x 解决方案。一些看起来几乎可以工作的选项正在使用 3.x 中不可用的 2.x 语法 - 或者它已移动)

0 投票
2 回答
800 浏览

asp.net-web-api - ASP.NET Web API 2 中的 StructureMap 没有对 System.Web.Mvc 的引用

StructureMap.WebApi2 包依赖于 StructureMap.MVC5,而后者又依赖于 System.Web.Mvc。

由于我们正在构建一个仅 Web API 的项目,我们不想包含 System.Web.Mvc 程序集。

是否可以在没有这种依赖关系的情况下在 Web API 2 中使用 StructureMap?

0 投票
1 回答
676 浏览

structuremap - 为什么在 StructureMap 中处理了 Singleton 类而没有处理瞬态

在我的应用程序中,我注意到如果我将 SM 注册表中的类标记为 Singleton 类型,它会被丢弃,但是如果不指定任何 Singleton,它不会被丢弃。造成这种情况的原因是什么以及为什么?