1

我正在使用 ASP.Net MVC 4 RTM Web API。我有一个带有参数的控制器操作,我想通过自定义模型绑定来填充该参数。为此,我创建了一个派生自System.Web.Http.Controllers.HttpParameterBinding设置此参数值的类。然后我创建了一个派生的属性类,System.Web.Http.ParameterBindingAttribute我用它来装饰我的控制器操作上的参数。

这一切都很好,我的HttpParameterBinding班级正在正确填充动作参数。我遇到的问题是我的自定义参数绑定类有一个我想通过我的 IoC 容器(Unity)解决的依赖项。有没有办法覆盖 Web API 创建HttpParameterBinding实例的方式,以便我可以从 Unity 构建自定义绑定类依赖项?BuildUp通过创建使用 Unity 的方法填充依赖项的自定义过滤器提供程序,我能够对过滤器属性执行类似的操作,但是对于 Web API 的HttpParameterBindings.

4

2 回答 2

0

看看这篇文章:WebAPI中的参数绑定

它介绍了从 Converters 到 Binder 再到 BinderProviders 的几个不同选项。听起来您可以编写一个ModelBinderProvider知道如何提供依赖项的自定义项。如果这在链中还不够高,您可以考虑替换默认IActionValueBinder服务。这是一个DefaultActionValueBinder实例,您可以扩展或简单地重新实现它。

我还强烈建议下载 WebAPI 源代码,因为它对我遇到的这些问题提供了难以置信的帮助。这是WebAPI 源代码。我建议下载它,以便您可以在 VS 中打开它以便于导航。

也可以随意查看FlitBit(它非常模块化,不要让包的数量吓到你)!我正在开发一个支持 FlitBit 的 WebAPI 包,特别是 FlitBit.IoC 和 FlitBit.Dto。如果我解决了我的 IoC 问题,我会添加更新,因为它与你的非常相似。

于 2013-09-04T21:53:55.700 回答
0

一般来说:要在 Web API 中使用 IoC / Unity,您需要单独设置它。

尝试下载 nuget 包 Unity.WebApi 看看是否有帮助!

于 2012-09-11T07:11:35.183 回答