2009-02-23 33 views
4

我有一个ASP.net MVC项目的工作在这一刻,我想知道如果以下可能: 我有一个自定义的ModelBinder类有一个引用服务(本质上是一个提取器)作为依赖。我希望使用IoC容器(当前为Ninject)注入依赖项,但似乎在方法链中没有任何地方可以插入一些内容,从我的IoC容器中加载模型联编程序。注入依赖到一个自定义的ModelBinder

我首先想到的是有一个通用对象活页夹,然后尝试检索从容器特定的模型绑定器,返回null如果没有找到,然后stetting这件事作为粘合剂,即是这样的: ModelBinders.Binders。添加(typeof运算(对象)的typeof(NinjectModelBinder));

,但我不确定

  • a)如果本会工作
  • 二)如果它真的做

正确的事情,我可以放弃复杂对象的解决,直到Action方法,但是它能够提供更复杂的对象(实质上是从数据访问层加载和构建的)作为参数提供给Action。

任何想法/帮助赞赏。

+1

我个人认为,通过ModelBinderAttribute创建ModelBinders应该是注射了。我认为这是当前MVC版本的设计缺陷。 – CVertex 2009-09-12 08:08:44

回答

3

我想你将不得不在模型联编程序中创建一个服务定位器调用,或者建立模型联编程序,或两者。

ModelBinders.Binders.Add(typeof(Customer), Resolve<CustomerBinder>()); 
+0

是的,我认为可能是这种情况。 – buildmaster 2009-02-24 19:54:42

1

我个人在我的场景中使用了setter注入类似于你的场景。在查看之后,NInject调用这个属性注入。它工作并完成工作。

0

里面你ModelBinder的,你可以调用类似的东西

IMyFetcher db = DependencyResolver.Current.GetService<IMyFetcher>();