請看看我的班級結構。我想我想繼承更多的樂趣。C# - 高級繼承
首先出現的是一個抽象基類:
public abstract class PolicyDetailed
{
internal abstract DataContainer GetActiveAsset();
}
接下來還有另外一個抽象類,這是通用的:
public abstract class PolicyDetailed<T> : PolicyDetailed where T : DataContainer
{
internal new abstract T GetActiveAsset();
}
最後,還有一個具體的策略類。 AccidentContainer從DataContainer繼承:
public class PolicyAccident : PolicyDetailed<AccidentContainer>
{
internal override AccidentContainer GetActiveAsset()
{
return null;
}
}
在編譯過程中,我得到了以下錯誤:
'PolicyAccident' does not implement inherited abstract member 'PolicyDetailed.GetActiveAsset()'
我不知道我應該用什麼修飾這裏得到它的工作。也許我也應該寫下我想達到的目標:我有一組不同類型的策略對象(例如PolicyAccident,PolicyTravel等),它們從PolicyDetailed繼承了不同類型的DataContainer(AccidentContainer,TravelContainer等)。我想在他們每個人身上調用「GetActiveAsset」方法,但不知道他們的具體類型,並通過PolicyDetailed引用它們。同時,我希望每個類都返回他們特定的Datacontainer子類。那可能嗎?
對於您聲明特定容器類型是否返回其特定策略類型是否真的很重要?你說你想引用返回的對象作爲PolicyDetailed,這樣你就失去了具體的信息! (請記住,AccidentContainer _IS_ DataContainer和AccidentContainer因此可以從返回類型爲DataContainer的方法返回,而根本不會更改任何簽名) – olagjo 2012-08-05 22:02:47
我在代碼的其他部分需要它,我在其中引用特定類型的策略並使用它容器。我可能會考慮使用兩種方法 - 一種會返回一個DataContainer對象,其次可能會返回一個特定的容器(但它感覺很笨拙) – Rummy 2012-08-06 12:51:17