2011-07-30 106 views
8

我正在尝试添加一个Protobuf ValueProviderFactory到MVC3,以便我可以挑出MIME类型并将原始数据反序列化为动作参数的对象。我也可以用它来改变默认的Json串行器。将自定义ValueProviderFactories添加到ASP.NET MVC3?

看着JsonValueProviderFactory.cs这不应该太难,但工厂都是硬编码的。

对于Protobuf我可以用IValueProvider做些事情,但我还没有检查过MVC3在接收MIME类型application/x-protobuf时会做什么。

我对此有何看法?

UPDATE

我发现this博客贴子,讨论创建一个IValueProvider。然后它在底部提到这个改变了MCV2。他把它改成一个ValueProviderFactory,并呼吁:

ValueProviderFactories.Factories.Add(new HttpCookieValueProviderFactory()); 

但在MVC3此属性为只读。

+1

有趣。我不知道MVC在这里做什么,所以我会好奇地回答这个问题。 –

回答

2

事实证明,它不仅读,你可以添加如下供应商:

ValueProviderFactories.Factories.Add(new MyValueProviderFactory()); 

我就知道这个了我控制住了自己!

我今天做了一些更多的搜索,并且this博客文章似乎暗示DependencyResolver会发现任何继承ValueProviderFactory的类。我正在使用MEF进行依赖关系解析,因此我只需添加一个Export属性即可自动获取。

我现在有一个further issue为protobuf-net编写一个自定义ValueProviderFactory。

+0

如果您想要执行某些操作,例如将默认的json值提供程序交换为自定义提供程序,您也可以删除值提供程序。 – evanmcdonnal