问题标签 [structuremap]

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

c# - StructureMap 注入问题

我正在尝试使用 StructureMap 并且基本上具有 3 个抽象级别。我有一个服务库和数据库接口。所以 IService 依赖于 IRepo 而 IRepo 依赖于 IDatabase。我的问题是我的 IDatabase 具体类型接受了数据库连接信息。我将动态创建这些,尝试使用 ObjectFactory.Configure()。

所以我有一个用户,并且该用户链接到一家公司,我查找公司连接信息,我想根据这些信息创建正确的 IDatabase 具体类型。我在启动代码中配置了具体类型。我只想从外部使用 IService 对象...所以我想创建一个以公司名称命名的命名 IService 对象。尝试动态创建这些类型时遇到问题。任何信息都会有帮助...

我基本上希望能够在不知道具体类型的情况下创建一个命名实例并在运行时设置属性或将特定参数传递给构造函数。我在配置文件中有具体的类型设置。我尝试使用 ObjectFactory.GetInstance 并尝试在 Configure 方法中设置属性,但得到了 StackOverflow 异常...HOW IRONIC

0 投票
2 回答
3398 浏览

c# - StructureMap 创建实例

我在启动时配置了接口的具体类型,但我想在运行时通过设置属性或在构造函数中设置不同的值来创建具体类型的实例。我看到的所有实例的创建都知道具体类型是什么,在运行时我不知道具体类型。有没有办法在不知道具体类型的情况下创建接口/类的具体实例?这是我所看到的:

或者:

我想做类似的事情......但不知道具体类型......只有抽象类或接口(在这种情况下会有属性)。虽然配置了具体类型。

0 投票
1 回答
641 浏览

c# - 如何在 StructureMap 中使用 InstanceScope.HttpSession?

我正在尝试使用 StructureMap 的 InstanceScope.HttpSession 功能,但遇到了问题。我有以下用于测试的方法:

我的 RepositoryRegistry 类如下所示:

因此,在我的客户端代码(ASP.NET MVC 控制器)中,我执行以下操作:

每次我甚至从同一个会话中调用这个控制器时,我每次都会得到一个新实例。我在这里做错了什么?

0 投票
1 回答
519 浏览

c# - 如何在 asp.net mvc 中制作结构图驱动的视图引擎

我的视图扩展了我制作的基本视图类:

目前我在这个类的构造函数中调用 ObjectFactory.GetInstance 来获取一些接口实现,但我喜欢使用结构映射将它们作为构造函数参数注入。

我使用结构映射控制器工厂来创建我的控制器,但我怎样才能为视图做同样的事情?

我知道我可以实现自定义 ViewEngine,但是使用反射器查看 mvc 默认视图引擎及其依赖项,它似乎一直在继续,我宁愿不必重新实现已经存在的东西。有没有人有一个狡猾的想法如何解决这个问题?

我知道我可以使用 setter 而不是构造函数注入使事情变得更容易,但如果可能的话,我宁愿避免这种情况。

0 投票
3 回答
2694 浏览

asp.net-mvc - ASP.NET MVC、MVCContrib、Structuremap,让它作为控制器工厂工作?

我试图让结构图正确创建我的控制器,我正在使用 DI 将 INewsService 注入到 NewsController 中,这是我唯一的构造函数。

我正在使用此代码启动应用程序

但是 Structuremap 似乎不想注入 INewsService 并且我收到错误 No parameterless constructor defined for this object。

我错过了什么?

0 投票
2 回答
7904 浏览

structuremap - 结构图教程

我正在寻找一些结构图教程。

有人知道吗?

编辑:感谢所有答案,但我正在寻找不在谷歌前 2 页上的东西。我会觉得首先这样做。

0 投票
0 回答
899 浏览

constructor - 定义 StructureMap 配置文件时如何配置构造函数参数

在为默认实例需要 ctor 参数的类型定义绑定时,如何做到这一点非常清楚。但是,当我想创建替代配置文件时,它会变得更加困难。

这是为默认实例完成的方式:

这是我坚持个人资料的地方:

如何设置此配置文件的类型映射?

我是否被迫使用实例绑定(我可以将默认值传递给 ctor 参数)?

0 投票
1 回答
279 浏览

c# - 注入非原始类型而不将它们包装在 StructureMap 的接口中

我有一个简单的 SM 注册表,我在其中配置所有 IDynamicValue 实例。我有一些非原始类型的构造函数参数(在我的例子中是 DateTime 和 Predicate Of T)。有没有一种方法可以注入这些而不必将它们包装在具有接口的类中(因此它们可以自动连接)。以下代码片段显示了我想要完成的任务:

该示例运行但失败并出现以下异常:

StructureMap 异常代码:202 没有为 PluginFamily System.DateTime 定义默认实例

谢谢,尼克

编辑:

Freddy Rios 解决方案非常适合我的需要。如果我自动连接一些构造函数参数,我仍然很好奇是否有这样做的方法(因此不能使用 ConstructedBy())

0 投票
4 回答
4339 浏览

asp.net-mvc - StructureMap / ASP.MVC / Visual Studio / LinqToSql 的奇怪行为

我最近一直在使用带有 StructureMap 的新 MVC 框架,并且总体上取得了不错的效果,但是,我一直遇到一个非常奇怪的错误,我无法理解或想出如何解决。

这是我的架构:

  • DBContext - linqToSql 数据上下文。
  • IRepository - 合同定义数据方法。
  • IService - 定义服务方法的合同。
  • 控制器 - 本例中为两个。

因此,我有:

StructureMap 用于为 IRepository 和 IService 定义具体类型,并且 DBContext 由 DSL 注册表配置的 Lamba 表达式 - () => new DBContext() 构造。

目前没有缓存DBContext

关于问题:

我的索引页面加载并同时向 ControllerOne 和 ControllerTwo 发出两个 Ajax 请求,这些请求是通过 MvcContrib 的 StructureMap 控制器工厂构造的。

StructureMap 正在注入 IService 的具体类型,而这些类型又是使用配置的 IRepository 实例和新的 DBContext 对象创建的。

ControllerOne 正在从 IService 实例请求模型,然后将其作为 JsonActionResult 返回,由 Newtonsoft.Json 呈现。

ControllerTwo 向 IService 实例请求不同的模型,当 MVC 框架执行 ActionResult 时,该模型也被序列化为 Json 对象。

我在 VS2008 中通过 Cassini 运行网站。

我不时看到的问题是从 LinqToSql 内部生成的错误

  • 无法读取数据,已经有一个读取器打开或
  • 由于数据已经存在,因此无法将数据加载到数据表中(目前我没有确切的例外情况,但两者都是 LinqToSql 内部的)。

如果错误发生在 ControllerOne 中,那么 ControllerTwo 也会失败并出现类似的错误,就好像这两个请求正在使用共享对象运行一样。

它不会一直出错,但足以让我担心我的架构以及它在某种程度上配置错误。

StructureMap 是否可以在后续请求中返回相同的 ControllerOne 和 ControllerTwo 实例,或者是否以任何方式缓存 DBContext?即使我没有要求它?

有没有人在 Visual Studio / Cassini 中工作时看到过类似的东西?通过 IIS 有帮助吗?

我应该删除 LinqToSql 吗?

关闭 Visual Studio 并再次打开通常可以在一段时间内解决问题。

非常感谢,如果有人能阐明这个问题。

编辑:包括来自 NLog 日志文件的日志记录片段(线程 id 是分号前的数字):

0 投票
2 回答
5296 浏览

.net - 如何在代码中定义 Structuremap 命名实例

我想在代码中创建一个 Structuremap 命名实例,没有配置文件

我希望能够像这样创建实例:

我无法在代码中定义这种类型。我找到了这个示例,但它使用以前版本的旧语法并将命名实例定义为:

在最新的结构图版本中,没有采用实例名称的 .AddConcreteType(instanceName) 方法。