Добавление пользовательских ValueProviderFactories в ASP.NET MVC3? - PullRequest
8 голосов
/ 30 июля 2011

Я пытался добавить Protobuf ValueProviderFactory в MVC3, чтобы я мог выбрать тип MIME и десериализовать необработанные данные в объекты для параметров действия. Я также мог бы использовать это для изменения стандартного сериализатора Json.

Глядя на JsonValueProviderFactory.cs, это не должно быть слишком сложно, но все фабрики кажутся жестко закодированными.

Для Protobuf я могу что-то сделать с IValueProvider, но я еще даже не проверил, что делает MVC3, когда получает тип MIME application/x-protobuf.

Правильно ли я поступаю?

UPDATE

Я нашел это сообщение в блоге, в котором говорится о создании IValueProvider. Затем в нижней части упоминается, что это изменилось вокруг MCV2. Он изменил его на ValueProviderFactory и звонит:

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

Но в MVC3 это свойство доступно только для чтения.

1 Ответ

2 голосов
/ 01 августа 2011

Оказывается, это не только для чтения, и вы можете добавить провайдеров следующим образом:

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

Я бы знал, если бы я проверил себя!

Я сделал несколькобольше поиска сегодня, и это сообщение в блоге, кажется, предполагает, что DependencyResolver найдет любые классы, которые наследуют ValueProviderFactory.Я использую MEF для разрешения зависимостей, поэтому я могу просто добавить атрибут Export, и он будет выбран автоматически.

Теперь у меня есть дальнейшая проблема , пишущая пользовательский ValueProviderFactory для protobuf-чистый.

...