问题标签 [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.
constructor - StructureMap3 如何为所有类型配置构造函数字符串注入?
我已经注册了我的类型
但是我如何指定构造函数注入而不必像这样指定具体类型呢?
c# - 使用 StructureMap 传递其他构造函数参数
继我之前发布的关于如何在结构映射中实现 IContainer 的帖子之后,我遇到了我希望这是我一段时间以来的最后一个问题。
如何将其他(非结构映射注入)对象传递给构造函数?
让我们从我用来测试这些东西的示例控制台应用程序中获取以下内容。
这会引发以下错误,因为我的构造函数具有 randomParam 并且 structuremap 不知道如何填补空白:
StructureMap.dll 中出现“StructureMap.StructureMapBuildPlanException”类型的未处理异常
附加信息:无法为具体类型 CommonServices.UserService 创建构建计划
构造函数:
在我的注册表中,我像这样定义我的用户服务:
我的问题是如何以最简单的方式做到这一点?
我找到了这个链接,但看不到如何使用这些建议,因为我必须让我的调用类知道 UserService 的依赖关系。如您所见,其中一些是数据层项目,我不想告诉我的 UI 层它们。
http://structuremap.github.io/resolving/passing-arguments-at-runtime/
moq - 如何将 MoqAutoMocker 自动模拟器与 StructureMap 3 一起使用?
我正在尝试熟悉使用 StructureMap 进行单元测试,并尝试使用 StructureMap 随附的 Moq 的内置自动模拟程序。我使用说明安装了 NuGet 包
它已安装并且 SM 工作正常。存储库中显然包含 MoqAutoMocker 代码,但找不到StructureMap.AutoMocker.Moq命名空间:
我查看了几个例子,这些例子看起来很容易做到,但它们已经有几年历史了,而且似乎专注于以前版本的 SM,但我希望有一些我还没有看到的东西:
http://joelabrahamsson.com/setting-expectations-with-structuremaps-moqautomocker/ http://evolutionarydeveloper.blogspot.com/2012/10/automock-with-structuremap-and-moq.html
我在这里有什么明显的遗漏吗?
c# - 如何在 asp.net-mvc 中使用 Structuremap 自动注册?
我有一个简单的 mvc 应用程序,它有 3 层
- Ui => 引用了 Common And Services
- 常见的
- 服务 => 引用了 Common
我在公共层定义我的服务合同并在服务层实现它
在我的 Global.asax 中,我为初始 Structuremap 容器编写了这段代码
现在,当我想像这样从 IPersonService 获取实例时,在我的控制器中
我收到这个错误
没有注册默认实例,无法自动确定类型“*.IPersonService”
有解决这个问题的想法吗?
asp.net-web-api - 构造函数依赖注入 WebApi 属性
我一直在寻找 WebApi 属性的非参数注入选项。
我的问题很简单,这是否真的可以使用 Structuremap?
我一直在谷歌搜索,但不断提出属性注入(我不喜欢使用)或构造函数注入的假设实现,到目前为止我无法复制。
我选择的容器是 Structuremap,但是任何示例都足够了,因为我能够转换它。
有人管理过这个吗?
c# - 麻烦引用 StructureMap.AutoMocking.dll 来使用 RhinoAutoMocker
我一直很想尝试使用 StructureMap 的 RhinoMocks 自动模拟容器:http: //docs.structuremap.net/AutoMocker.htm
该文档指出:
开箱即用的 StructureMap 包括用于 RhinoMocks 的 RhinoAutoMocker 和用于 Moq 的 MoqAutoMocker。自动模拟支持在 StructureMap.AutoMocking.dll 中。
然而,尽管已经将 RhinoMocks 3.6.1 和 structuremap 版本 3.1.4.143 和 structuremap.automocking 3.1.0.133 引入我的测试项目,但没有引用 StructureMap.AutoMocking.dll(因此它不在我的 /bin 中) 因此我无法解析 RhinoAutoMocker。
我从头开始创建了一个新项目,一切正常,这让我相信我现有的项目设置有些奇怪。删除 structuremap、structuremap.automocking 和 RhinoMocks 并重新添加会产生相同的结果——没有 structuremap.automocking DLL。
有没有其他人有这个问题?这只是 Nuget/VisualStudio 问题吗?
dependency-injection - 如何在多层解决方案中正确使用 StructureMap(或任何其他 IoC 容器)?
我有一个具有以下结构的 3 层解决方案:
UI -> BLL <- DAL
UI 是一个 ASP.NET MVC 应用程序。每个控制器的构造函数都需要 BLL 组件。每个 BLL 组件在其构造函数上都需要 DAL 组件。
过去我使用 StructureMap 作为 IoC 容器。在其早期版本中,StructureMap 使用ObjectFactory
静态类。因为它是一个静态类,所以我可以在 MVC 上使用 StructureMap 来替换默认值ControllerFactory
,然后是另一个进行 BLL 和 DAL 配置的项目。
在较新的 StructureMap 版本中,ObjectFactory 已被标记为过时。我明白现在我必须提供我自己的 Container 实例。
但是,如果没有连接我的项目,我就不会发生这种链条。此外,如果我将 BLL 和 DAL 的配置添加到 MVC 项目,我将不得不在 UI 级别引用我想避免的所有内容。
我认为我必须做的是使用 StructureMap 保留两个不同的项目。
MVC 项目内部的一个,负责创建控制器。但是,我需要找到一种将 BLL 实例委托给第二个容器的方法,该容器可能会保持原样并知道如何创建 BLL 和 DAL(因此可以创建 BLL)。
第二个(创建 BLL 组件)如下所示:
我的问题是:
是否真的可以在 BLL 级别将对象创建从我的 MVC 应用程序委托给 StructureMap 容器,而无需引用其他(不需要的)项目?
如果我要返回容器的新实例,如上面的代码所示,这意味着我正在为对 Web 服务器的每个请求运行扫描程序(StructureMap 使用 PerRequest 作为默认值)。我怎样才能避免这种情况?除了回到单身人士之外,我不知道如何防止这种情况发生。
c# - 使用 StructureMap IoC / Entity Framework 时关闭数据库连接?
我对 StructureMap 的 IoC(以及一般的 IoC)有点陌生。从示例中,我的东西设置如下:
默认注册表:
然后,在任何 Action 需要数据库的每个控制器中,我都有:
当我需要使用它时,我只是这样做:
当我使用 ADO.NET 时,我总是对所有内容都有一个 using 语句。我见过使用 using 语句的实体框架的示例。但是,当将 EF 与 StuctureMap 结合使用时,我是否需要以某种方式将 using 语句包裹起来?如果是这样,我该怎么做?
c# - 使用带有 StructureMap 的短期表单对象
我有我正在编写的这个应用程序,由于它的大小,它在组织方面变得有点灾难。我认为这将是使用 StructureMap v3.1.4.143 实现 IoC 的理想选择。
我正在我的 Program.cs 中设置我的对象图并创建一个应用程序上下文,该上下文在其构造函数中具有一些依赖项。其中之一是启动画面形式。当应用程序上下文运行时,它会显示此表单,并根据初始化时发生的情况更新表单上的当前状态。
这个对象是非常临时的,一旦我处理它,StructureMap 会用它做什么?它是否以某种方式缓存对象?如果确实以某种方式缓存了对象,那么将其保留为根和处置似乎有点浪费。我应该使用嵌套容器吗?如果我可以管理它,我会尽量避免传递容器,并且应用程序上下文必须在调用 Application.Run (它是模态的)时处理这个对象。那么有没有好的方法来处理这种情况呢?我真的不想让对象闲逛,当它们不再使用时,GC 无法访问它们。
这会导致另一个可能出现的设计问题:如果我单击一个按钮,然后创建、使用和处理一个新表单,我将如何通过 StructureMap 处理这个问题?我需要在运行时创建表单,并且只能按需创建。而且我不想在用户完成后保留它(我认为这很浪费)。如果我处置表单,并使用由 StructureMap 注入的工厂方法创建一个新实例,它会以处置状态返回前一个实例吗?
现在只是为了解决这个问题:在表单关闭时“隐藏”它不是一个选项。
这确实是一种不同的思维方式,我当然不习惯。因此,任何指导将不胜感激。
c# - 未为 DI/IoC 设置 StructureMap 和对象
我有一种情况,我创建了一个工厂方法来创建一个对象。但是,该对象具有在创建对象之前需要执行的样板代码。修复这部分设计超出了这个问题的范围。
此外,当创建对象时,屏幕上会更新状态显示。这要求此状态显示在创建此对象之前已实例化并可见,并且应用程序处于运行状态。它作为依赖项传递给工厂。
我正在使用 StructureMap 的 v3.1.4.143。
所以,这就是我在正常世界(IoC 之前)要做的事情:
看起来很简单,但理想情况下,我希望能够通过注入传递该图形对象,因为在许多地方都需要它。
所以,在结构图中,我创建了一个工厂函数来完成上述工作。然而这让我很伤心。
只有这给了我一个关于未注册 GraphicsInterface 的错误。没关系,我应该可以注册 GraphicsInterface 对象。除了我无法注册 GraphicsInterface 因为构造函数需要两个参数,其中一个必须在创建对象之前查询,并且只能通过上面的 GetVideoDevices 方法设置,而且似乎 StructureMap 在我调用时试图为我创建对象_getGraphicsFactory() (这很奇怪,我希望它执行我的函数来创建对象)。
我什至尝试在 GetVideoDevices 方法中像这样调用 GetInstance:
但是没有骰子...
那么,有人知道我如何让它工作吗?