问题标签 [simple-injector]

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

c# - Simple Injector 是否支持 MVC 4 ASP.NET Web API?

我是 Simple Injector IOC 容器的新手。我将开始在一个需要使用 MVC 4 ASP.NET Web API 实现多租户 ASP.NET MVC 的项目中工作。

我的问题是:Simple 注入器是否支持 MVC 4 ASP.NET Web API?阅读像这样的简单注入器文档会引用 MVC 3,我想知道是否也支持 MVC 4。

0 投票
1 回答
2268 浏览

nhibernate - SimpleInjector:注入不适用于 MVC 4 ASP.NET Web API

我有这个设置:

Initialize 方法在以下位置调用Application_Start

但是当我尝试调用控制器操作时,我得到一个ArgumentException

类型“PositionReportApi.Controllers.PositionsController”没有默认构造函数

堆栈跟踪:

在 System.Linq.Expressions.Expression.New(Type type) 在 System.Web.Http.Internal.TypeActivator.Create[TBase](Type instanceType) 在 System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor控制器描述符,类型控制器类型)

我无法注册ISession.

如何注册由工厂创建的 ISession?

0 投票
1 回答
1398 浏览

asp.net-mvc - 无法检索实体框架对象上下文以在 SimpleInjectorInitializer 中进行验证

好像我在安装 Simple Injector MVC3 Integration 包的时候,SimpleInjectorInitializer 放在了 App_Start 文件夹中。但是,当在 Initialize() 中调用 Verify() 方法时,它会在尝试获取实体框架对象上下文时产生此错误(我还提供了内部异常):

似乎我还必须将注册调用从 Global.asax.cs Application_Start() 移动到 SimpleInjectorInitializer 的 InitializeContainer() 方法。

我现在不完全确定该怎么做,但这个问题似乎与这个问题有点相关:升级到 Ninject 3.0.0-rc3 后的连接字符串异常

似乎应用程序正在尝试在实体框架甚至意识到它自己之前加载上下文并且无法正确解析连接字符串?

0 投票
1 回答
3119 浏览

asp.net-mvc - 哪里是 Simple Injector 等效于 StructureMap 的 ObjectFactory

我正在从 StructureMap 迁移到 ASP.NET MVC3 应用程序中的 Simple Injector。

我正在为控制器 DI 使用 MVC3 扩展,但在尝试替换 StructureMap 的静态方面时遇到了问题。我们有电话

贯穿应用程序的不同层。看起来 Simple Injector 没有办法做到这一点。

我错过了什么吗?还是 Simple Injector 不适用于我的应用?

请提前告知和感谢。

0 投票
1 回答
3213 浏览

c# - 将 Ninject 替换为 Simple Injector

我在我的应用程序中使用了 Ninject。Ninject 非常简单易学,但速度很慢,我尝试使用另一个 IoC 来比较它是否比 Ninject 更快。

有很多用于 MVC3 的 IoC 容器,并且 Simple Injector 对我来说看起来非常好,但是我在用Simple Injector替换 Ninject 时遇到了很多问题。

特别是与AutoMapper. 我尝试将这些行转换为 Simple Injector 代码。

你能帮帮我吗?我已经阅读了文档并用谷歌搜索,但到目前为止还没有解决方案。

0 投票
1 回答
3725 浏览

asp.net-mvc-3 - 如何在 mvc3 中使用 Simple Injector 注册自定义 ModelMetadataProvider

当我尝试使用简单的注入器注册模型元数据提供程序时,我没有收到任何错误,但是当我访问实例时,默认情况下是 mvc 中的一个。

我尝试注册简单注射器的方式如下;

}

0 投票
2 回答
692 浏览

c# - Caliburn 绑定异常

让我解释一下我的问题。请原谅我的长问题。就这样吧。

我有一个视图(BusyProviderView

哪个有视图模型:

我再次有一个Shell 视图

哪个有视图模型

DummyOperation外观

最后我有BootStrapper

看起来我已经设置了所有内容,但是当我尝试运行它时会引发异常。 在此处输入图像描述

我确定问题是由

cal:Bind.Model="{绑定}

一旦我删除了上述语句,程序就会运行而不会崩溃但没有绑定。

如果你看图像,

serviceType 作为NULL传递,键是“请稍候....”,这是从哪里来的??

0 投票
3 回答
1009 浏览

asp.net-mvc-3 - 如何减少对控制器的注入依赖项的数量

我正在使用 MVC3、Entity Framework v4.3 Code First 和 SimpleInjector。我有几个看起来像这样的简单类:

我有另一个看起来像这样的实体:

每个 Thingy(当前)都有自己的 Manager 类,如下所示:

因此,我的 MainController 如下:

实际上,这个控制器中注入的依赖项是原来的两倍。它闻起来臭臭的。当您还知道存在具有所有或大部分相同依赖项的 OtherController 时,气味会更糟。我想重构它。

我已经对 DI 有足够的了解,知道属性注入和服务定位器不是好主意。

我无法拆分我的 MainController,因为它是一个单一的屏幕,需要通过单击一个保存按钮来显示和编辑所有这些内容。换句话说,单个 post 操作方法可以保存所有内容(尽管我愿意更改它,只要它仍然是单个 Save 按钮)。这个屏幕是用 Knockoutjs 构建的,如果有影响的话,它会用 Ajax 帖子保存。

我幽默地使用了环境上下文,但我并不肯定这是正确的方法。我也幽默地使用了注入 Facade。我也想知道我是否应该在这一点上实现一个命令架构。(以上所有内容不只是将气味转移到其他地方吗?)

最后,也许独立于上述三种方法,我是否应该使用一个具有显式方法的 LookupManager,例如 GetAThings()、GetAThing(id)、GetBThings()、GetBThing(id) 等?(但是那个 LookupManager 需要注入几个存储库,或者一种新型的存储库。)

除了我的想法之外,我的问题是,重申一下:重构此代码以减少注入依赖项的疯狂数量的好方法是什么?

0 投票
1 回答
2955 浏览

c# - 如何使用简单的注入器在运行时更改依赖项注册?

我正在使用Simple Injector IoC 框架,我希望能够在运行时更改依赖项注册。例如,我有两个实现,AB,接口I。实现A是在应用程序启动时注册的,但是根据一些在运行时可能会改变的标志,我想切换实现。我们目前正在执行我们的OnActionExecuting事件,我们BaseController所有的控制器都继承自该事件。这是我正在尝试做的示例代码。

在此先感谢您的帮助。

0 投票
2 回答
8450 浏览

c# - 动作过滤器上的简单注入器属性注入

我要注入的动作过滤器是这样开始的

我已经像这样设置了我的容器:

当我运行它时,该FrameworkServiceProxy属性为空。

我读过这篇文章:简单注入器:在基类中注入属性并遵循答案。我还阅读了此页面Simple Injector Documentation中的示例。

我没有注入基类,也许这就是问题所在?

## 更新 ##

我正在添加更多信息,因为我认为它应该从史蒂文斯回答中所说的内容开始工作。

我正在为 MVC 3 使用 NuGet 包。这会将以下内容添加到应用程序中:

这包括container.RegisterMvcAttributeFilterProvider();我现在理解的应该注册一个过滤器提供程序,并且应该意味着过滤器是通过容器创建的(这种理解可能是错误的),然后属性会自动连接起来。

我的过滤器在 Global.asax.cs 中注册,如下所示:

在我看来,过滤器不是由容器创建的,所以我认为我需要做一些其他事情来实现它?