在上篇中.我們分析了解了ModelBinder而本文將在實例中添加自己的ModelBinder,以便獲得我們期望中的效果.本次我們通過一個簡單的Demo來對全站的ModelBinder做一個解決方案.
首先給出工程文件圖:
注意一點,本例中,我的目標是給整站的Entity對象實現一個通用的,可擴展的ModelBinder引擎.由於我們要讓實體對象和url字符串之間轉換,為了方便,可以定義相應的方法來實現,因此定義了IEntity接口,該接口定義如下:
解釋下,Fill方法是將對應的字符串轉換成對象.ToString方法是將對象轉換成特定的字符串.也就是說,只要某個對象實現了該接口,我們就可以將該對象方便的從url字符串和對象之間轉換.這正是我們要達到的目標.另一個方式是讓IEntity要實現IConvertible,不過IConvertible中方法實在太多,偷懶就不用它了.
然後,在項目中,BaseEntity是一個抽象類,它只實現了IEntity中關於對象和字符串轉換的方法.為了通用性,這兒用反射來實現.Fill方法實現: