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

c# - StructureMap 4.0.0注入具体实例

我最近更新了结构图,发现您不能再使用旧语法将具体实例注入属性。例如代码不再有效:

如何使代码具有以前的效果?

0 投票
1 回答
620 浏览

asp.net-mvc - StructureMap:如何将容器发送到具有不接受参数的构造函数的类

我试图找出如何将 StructrueMap 容器传递给我编写的从另一个(MS-Class)继承的类。

我需要 portalTenantManager 是我在 Global.asax 的容器中定义的实例。

我的 Global Assax 设置了以下内容:

编辑: 由于@NightOwl888 的评论,我将进一步解释这个类的作用。(希望能解释一下为什么我的手被绑住了)

我的应用程序能够使用 Azure Active Directory 对用户进行身份验证,并且支持多租户。在身份验证管道中,我可以将验证端点存储在我的数据库中,而不是 web.config 文件中的默认方式。请参阅 MSDNthis,它实际上正在解释我在做什么。

所以我在标签issuerNameRegistry下的 web.config 中注册了我的课程。在验证管道的某个时刻,我的类被实例化,并且被覆盖的方法IsThumbprintValid被调用。问题是在issuerNameRegistry中注册的类需要一个无参数的构造函数(就是它!受约束的构造!),因此我无法创建一个可以解决我的问题的构造函数。

谢谢你的帮助

0 投票
0 回答
46 浏览

structuremap - 无论如何要禁用结构图 4 中的自动解析具体类型?

只是一个简单的问题。我正在寻找一种禁用自动解析具体类型功能的方法(如下所述):

http://structuremap.github.io/resolving/requesting-a-concrete-type/

可能吗 ?

0 投票
1 回答
121 浏览

dependency-injection - 在 StructureMap 4 中,为什么使用 lambda 创建的默认实例会导致 NotSupportedException?

我正在迁移到 StructureMap 4(特别是版本 4.0.1.318)。

我有看起来像适当的对象注册的东西:

但是,如果没有配置 ISomeInterface 的“特殊”实例(如果需要,通常会在另一个注册表中发生),那么不要回退到默认实例(这是我所期望的)这样的调用

结果如下:System.NotSupportedException: Instance's of type 'StructureMap.Pipeline.DefaultInstance' does not support ToNamedClose() and cannot be used as a MissingInstance

我猜我的注册有问题……但是什么?

0 投票
1 回答
392 浏览

plugins - StructureMap 无法从插件框架中的文件加载程序集

我正在使用 StructureMap 在我的应用程序开始时加载插件。在应用程序启动时,当我创建容器时,我会进行简单的扫描,例如:

但我在控制台中看到了这些错误:

我最终通过手动将文件加载到 AppDomain 中来解决它,如下所示:

但我很好奇为什么我一开始就从结构图中收到这条消息。我查看了代码,看起来任何错误都得到了处理。有什么想法吗?我使用的是 4.0.1.318 版本,直到我从 3.1.4.143 版本升级 StructureMap 时才注意到这一点。另外,如果重要的话,我正在使用 .Net v4.6.1。

0 投票
3 回答
2977 浏览

c# - 如何使用 StructureMap (4.0) 将依赖项注入自定义属性?MVC5 项目

我非常想做这个人描述的事情(将依赖项传递给自定义属性):

如何使用带有属性的依赖注入?

但是,我想用 StructureMap 4.0 来做,而不是 Ninject。

我的项目在我的 dll 中设置了自定义属性Data Layer,并且我已经安装了 StructureMap并在我的UI Layer.

我已经确定我可能必须使用 StructureMap 进行 Setter 注入:

http://docs.structuremap.net/ConstructorAndSetterInjection.htm

但是,我在数据层中的自定义属性无法正常工作。

我认为为了使事情正常进行,我也应该将 Structuremap 安装到我的数据层中,并将其放在 IoC.cs 中:

哦..我的自定义属性:

这是正确的做法吗?我想我漏了一步。(但话又说回来,我还没有真正在同一个项目中的多个 dll 上设置 Structuremap。想知道使用 StructureMap 的多个项目是否需要更多东西。

目前,应用程序将运行,但不会填充自定义属性中的属性。

更新:这个 StackOverflow 问题很有帮助:

如何让 StructureMap 与 AngularJs / MVC5 和 WebApi2 Web 项目一起使用

0 投票
1 回答
895 浏览

c# - ASP.Net MVC5 和 StructureMap4 - 简化方法

在将StructureMap.MVC5集成到 ASP.Net MVC5 Web 应用程序时,意识到它使用的是 3.1 版本的 SM 而不是 4+。然后尝试获取此 Nuget 中包含的文件并将其更改为 SM4,但那里有很多代码,并且 SM3.1 和 SM4 之间有几个不兼容的调用。

有了这个,我最终编写了一个简单的 IoC,如下所示。寻找有关其不足之处以及与此处链接的 Nuget 版本相比效率低下的建议。

定义默认注册表

创建静态容器

覆盖控制器工厂

在 Global.asax 中注册

这可行,但担心会过度简化它,这可能会引入其他问题。寻找有关这种方法的问题的见解。

0 投票
1 回答
507 浏览

asp.net-core - ASP.NET 5 控制器依赖注入具体类,没有控制器接口

是否可以使用 StructureMap 扫描程序集以了解未实现接口的具体类?我对 StructureMap 相当陌生,所以不确定这是否应该是显而易见的事情。

对于上下文,以下是我正在使用的课程的亮点。UserController依赖于一个实例,UserManager该实例依赖于一个实例IUserRepository

这是我在Startup.ConfigureServices方法中用于扫描 DI 的代码:

问题是我收到以下错误:

尝试激活“UserController”时无法解析“UserManager”类型的服务。

如果我添加以下行,Startup.ConfigureServices那么它可以工作,但我正在寻找一种不需要我为每个经理都设置一行的解决方案。我一直认为 StructureMap 程序集扫描可以解决这个问题,但我也对其他解决方案持开放态度。

0 投票
1 回答
264 浏览

asp.net - 具有命名实例的 StructureMap 4 未按预期工作

这是我的解决方案中几个类的简化版本以及它们实现的接口。它们都共享一个接口,也实现了一个专用接口。

我的 StructureMap 注册表按如下方式注册这些依赖项:

最后我有一个类,它在构造函数中注入这些依赖项,如下所示:

在运行时,我观察到 cOne 和 cTwo 都是ConcreteTwo. 如果我在 StructureMap 注册表中交换两个命名注册的顺序,则 cOne 和 cTwo 都是ConcreteOne.

这不是我第一次使用命名实例,但我之前没有观察到这一点。有什么我想念的吗?我已经检查并再次检查了传递给 Named 方法的值是否与构造函数中的参数名称相对应。

更新

这是使我的示例案例工作所需的更新的注册表项。感谢@jeremy-d-miller 提供我需要的信息:

0 投票
1 回答
179 浏览

.net - StructureMap GetAllInstances 在预期多个实例时返回一个实例

我有一个基于命令修改记录的应用程序。我使用 StructureMap 作为我的容器,但它的行为不像我预期的那样。

该应用程序有几个命令来更新一些业务实体。我有许多 FluentValidation 验证器来验证这些命令。一些命令共享相同的字段,我已将其提取到界面中。我在这些接口上实现了一些验证器

我正在像这样配置 StructureMap 容器

当我尝试检索 MoveCommand 的验证器时var validators = container.GetAllInstances<IValidator<MoveCommand>>();,我希望获得两个验证器 GameConfigurationValidator 和 MoveActionValidator,但 GetAllInstances 只返回 GameConfigurationValidator。如果我先定义 MoveActionValidator,它会返回,但不会返回 GameConfigurationValidator。

在使用 GetAllInstances 时,我需要做什么才能获得 MoveCommand 的所有验证器,即 GameConfigurationValidator 和 MoveActionValidator?

完整示例(需要 StructureMap 和 ServiceStack nuget 包):