2014-02-28 49 views
-3

我目前正在玩弄繼承的方法。現在我有一個名爲「BaseData」的基類,它被另外4個類繼承,其中一個類是Category。將基類的返回值作爲繼承類來投射

我在BaseData中有一個輔助方法,它目前返回一個BaseData數據類型。我可以從繼承類調用助手方法,但我添加了一個類到它的轉換。現在我明白,即使Category從BaseData繼承,它們是兩個完全不同的類。有沒有正確的方法來做我想做的事情?或者甚至有可能?

我的基類,看起來像這樣

public class DataBase 
{ 
    // Accessors and stuff 

    internal static DataBase BindDataToInstance(DataRow dr) 
    { 
     var condition = new DataBase() 
     { 
      ID = (string)dr["ID"], 
      Title = (string)dr["Title"], 
      Description = (string)dr["Description"] 
     }; 
     return condition; 
    } 


} 

我想調用該方法由

public class Condition : BaseData 
    { 
     public static Condition GetCondition() 
     { 

     return (Condition)BindDataToInstance(ConditionDal.GetCondition(conditionId)); 

     } 

提前感謝!

編輯:基本上,我想以基類的實例,並把它變成一個派生類

是驚悚克魯格提出的代碼的實例就是我目前使用的 - 每一個BindDataToInstance方法類。除了返回類型外,每個都完全相同。

+7

您能否澄清一下您的問題,例如:通過張貼一些代碼? –

+0

聽起來你不需要添加演員。你沒有真正說出你想要做什麼,所以不可能回答是否有正確的/可能的方式來做到這一點。 – Daniel

+0

分享代碼,它將非常有助於我們理解你的目標。 你也可以給出一個非常具體的問題,如:「我無法從iLoveCats繼承iLoveCats類,但我可以從iHateDogs中獲得它」爲什麼?或者我不能讓貓跟狗說話呢?等 你的問題很難回答,因爲它就像我做了兩隻動物一隻有兩條腿,另一隻它們不是如何工作? – JPK

回答

0

我建議你閱讀多態性和繼承。你試圖做的事情可能依賴於你的繼承結構,不幸的是你的代碼幾乎沒有提供關於這些類如何綁定在一起的信息。

我的建議,以解決你的imediate問題可能會使用包裝。如果Condition將DataBase作爲參數並將所有值設置爲必要值,則可以這樣做:

public static Condition GetCondition() 
{ 

    return new Condition(BindDataToInstance(ConditionDal.GetCondition(conditionId))); 

} 
+0

您提供的代碼是我目前使用的代碼。但是我會在每個派生類中都有相同的代碼塊。我會閱讀多態性壽。謝謝! –