我正在尝试向MVC3添加一个Protobuf ValueProviderFactory,以便我可以选择MIME类型并将原始数据反序列化为对象以获取操作参数。我也可以使用它来更改默认的Json序列化程序。
看JsonValueProviderFactory.cs
这不应该太难,但工厂似乎都是硬编码的。
对于Protobuf我可以用IValueProvider做一些事情,但我还没有检查MVC3在收到MIME类型application/x-protobuf
时做了什么。
我能以正确的方式解决这个问题吗?
更新
我找到了this博客文章,内容涉及创建IValueProvider
。然后它在底部提到这改变了MCV2。他将其更改为ValueProviderFactory
并致电:
ValueProviderFactories.Factories.Add(new HttpCookieValueProviderFactory());
但是在MVC3中,这个属性是只读的。
答案 0 :(得分:2)
事实证明它不是只读的,你可以按如下方式添加提供者:
ValueProviderFactories.Factories.Add(new MyValueProviderFactory());
如果我检查了自己,我会知道这一点!
我今天做了更多搜索,this博文似乎暗示DependencyResolver
会找到任何继承ValueProviderFactory
的类。我正在使用MEF进行依赖项解析,所以我可以添加一个Export属性,它会自动被拾取。
我现在有一个further issue为protobuf-net编写自定义ValueProviderFactory。