請看下面的情況。我有一個XML文檔如下,動態鑄造C#
<Form>
<Control Type="Text" Name="FirstName" />
<Control Type="DateTime" Name="DateOfBirth" />
<Control Type="Text" Name="PlaceOfBirth" />
</Form>
我有一個稱爲控制與單個抽象方法被稱爲過程需要的HttpRequest的單個參數的抽象類。我還有兩個派生自Control的類,稱爲TextControl和DateTimeControl。 Text和DateTime都會覆蓋Process方法以提供它們自己的實現。
我也有一個Form類,它有一個Process方法接受一個HttpRequest類型的參數,一個構造函數接受一個XmlDocument類型的參數。
創建Form的新實例,並通過XmlDocument參數傳入上述Xml(我們如何從字符串獲取到XmlDocument是無關緊要的)。然後,我調用剛剛創建的Form I實例的Process方法,並按預期方式傳入類型爲HttpRequest的參數。
目前爲止都很好。現在回到這個問題上。
爲了使控件的處理可擴展,我希望能夠將類映射爲控件類型。
例如。
Form.RegisterControl("Text", Text)
Form.RegisterControl("DateTime", DateTimeControl)
在形式的過程方法我想itterate在文檔中的每個控制節點(如何做,這是再次不相關)和實例化,其基於註冊的類相匹配的類型的類的一個實例通過我們的RegisterControl方法。我可以在這個階段指定它們來自Control,但不能明確指定它們的類型。因爲它們都是從Control派生的,所以我想調用我知道將實現的Process方法。
這甚至可能嗎?如果是這樣,我會怎麼做呢?
謝謝喬恩!第一個答案應該是正確的(你假設正確)。我現在正在破解它! – 2009-07-11 23:14:56