【发布时间】:2010-06-29 22:48:48
【问题描述】:
这是我的 BaseContentObject 类的自定义模型绑定器代码:
public class BaseContentObjectCommonPropertiesBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (controllerContext == null)
{
throw new ArgumentNullException("controllerContext");
}
if (bindingContext == null)
{
throw new ArgumentNullException("bindingContext");
}
BaseContentObject obj = (BaseContentObject)base.BindModel(controllerContext, bindingContext);
IContentRepository repository = new XmlContentRepository(obj.ContentType);
// do something with the object and repository here...
return obj;
}
}
为了清楚起见,我省略了一些代码。
我感兴趣的是这条线。
IContentRepository repository = new XmlContentRepository(obj.ContentType);
我已经为依赖注入设置了所有东西,它可以与我的控制器一起使用。我正在使用忍者 2。 不知何故,我需要在这个模型绑定器中连接 DI(我也有与 MVC 操作过滤器类似的问题) - 在自定义绑定器和自定义操作过滤器中,我有时需要访问存储库或服务,因为我必须访问数据库。
更糟糕的是,内容存储库不是固定的,它依赖于“obj.ContentType”。
到目前为止,我发现的所有内容都指向 Ninject 文档,但它的 wiki 只显示了非常基本的示例,而且看起来还没有更新到第 2 版。
【问题讨论】:
-
stackoverflow.com/questions/2899680/… 找到了这个问题和 Mark Seemann 的回复,其中谈到不将 DI 与模型活页夹一起使用,但任何有关这方面的 cmet 仍将不胜感激
标签: c# asp.net-mvc ninject