2011-07-30 111 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