【发布时间】:2011-06-23 23:00:12
【问题描述】:
问题:有没有办法使用 Ninject 将依赖项注入到我的 MVC 模型中?
首先,我是 MVC 和 DI(以及 stackoverflow,顺便说一句)的新手,所以我想确保我在解决这个问题时走的是正确的道路。几天来我一直在谷歌上搜索答案,但找不到一个清晰的解释……我正在使用 C#、.NET4、MVC3、Ninject 和 VS2010。
场景如下:我有一个新的用户表单,用户可以在其中设置他们的登录名、角色和其他个人资料数据。提交后,我需要将登录信息保存到 MembershipProvider,将角色保存到 RoleProvider 等...它有点麻烦,因为我根据项目要求使用双提供者(Active Directory / 本地数据库),因此,在确定要保存到哪个提供者、用户是否已经存在、是否允许他们自我识别任何角色等方面存在一些逻辑。
我觉得这个逻辑应该放在我模型的 .Save() 方法中。 但是,我需要将提供程序的实例注入到我的模型中,而 Ninject 似乎没有注入模型(至少不使用 NuGet 包附带的默认设置)。因此,我最初的问题。
我能想到一些替代方案...
- 也许模型不适合开始此逻辑,我应该将逻辑抽象为服务?但是为这个保存功能提供服务对我来说似乎有点过头了。
- 我可以只吃控制器中的膨胀...但我被告知“胖”控制器是一种不好的做法。
- 我想我可以改为将我的提供程序注入到我的控制器中,然后将这些依赖项传递给我的模型,但这似乎有点不靠谱。
所以... 有没有办法对模型进行 Ninject 或者我是否需要重新考虑,因为我是这方面的新手?
【问题讨论】:
-
什么意思 ninject 似乎没有注入模型?注入 INTO 模型?你的会员是公开的吗?
-
@DustinDavis - 是的,我的意思是 INTO 模型,我的模型和构造函数是公开的。在任何地方调用它们时,我仍然必须指定构造函数参数,而且我的视图仍然抱怨需要无参数构造函数,所以看起来 Ninject 不适用于我的模型。
标签: c# asp.net-mvc-3 ninject