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

时间:2011-07-30 19:32:00

标签: .net asp.net-mvc asp.net-mvc-3 protobuf-net

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

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

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

我能以正确的方式解决这个问题吗?

更新

我找到了this博客文章,内容涉及创建IValueProvider。然后它在底部提到这改变了MCV2。他将其更改为ValueProviderFactory并致电:

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

但是在MVC3中,这个属性是只读的。

1 个答案:

答案 0 :(得分:2)

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

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

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

我今天做了更多搜索,this博文似乎暗示DependencyResolver会找到任何继承ValueProviderFactory的类。我正在使用MEF进行依赖项解析,所以我可以添加一个Export属性,它会自动被拾取。

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