将自定义ValueProviderFactories添加到ASP.NET MVC3?

Tim*_*Tim 8 .net asp.net-mvc protobuf-net asp.net-mvc-3

我想尝试将一个Protobuf ValueProviderFactory添加到MVC3,以便我可以选择MIME类型并将原始数据反序列化为对象以获取操作参数.我也可以使用它来更改默认的Json序列化程序.

JsonValueProviderFactory.cs这个应该不会太难,但工厂似乎都是硬编码的.

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

我是以正确的方式来做这件事的吗?

UPDATE

我发现这个博客文章谈论创建一个IValueProvider.然后它在底部提到这改变了MCV2.他将其改为a ValueProviderFactory并致电:

ValueProviderFactories.Factories.Add(new HttpCookieValueProviderFactory());
Run Code Online (Sandbox Code Playgroud)

但在MVC3中,此属性是只读的.

Tim*_*Tim 2

事实证明它不是只读的,您可以按如下方式添加提供程序:

ValueProviderFactories.Factories.Add(new MyValueProviderFactory());
Run Code Online (Sandbox Code Playgroud)

如果我检查一下自己,我就会知道这一点!

我今天做了更多搜索,这篇博文似乎表明将DependencyResolver找到任何继承的类ValueProviderFactory。我使用 MEF 进行依赖项解析,因此我只需添加一个 Export 属性,它就会被自动选取。

我现在还有一个为 protobuf-net 编写自定义 ValueProviderFactory 的问题