I need to 2 levels of inheritance and abstraction in master-child relationship是討論的開始。在.net 4.0中繼承對象問題的主 - 子對象設計和通用基類型問題
我想要的是確保所有從BaseMaster
繼承的對象都必須有一個子項列表,並且子項的類型必須從BaseChild
繼承。根據這個職位,我已經解決我的設計
public abstract class BaseMaster<TChild> where TChild : BaseChild
{
public Collection<TChild> Children { get; }
}
public abstract BaseChild
{ }
public class FirstRealMaster : BaseMaster<FirstRealChild> { /* add more properties */ }
public class FirstChild : BaseChild { /* add more properties */ }
但是,這樣的設計我失去了使用的基本對象類型來描述繼承對象的能力,因爲BaseMaster<BaseChild> b = new FirstRealMaster();
將不會被允許,在技術上也有不同的類型。以下是我希望可以使其工作的示例代碼。
static BaseMaster<BaseChild> ReturnBaseMaster(int i)
{
if (i == 1)
{
return new FirstRealMaster();
}
else if (i == 2)
{
return new SecondRealMaster();
}
return null;
}
這樣的限制帶來了很多不便。任何建議在這裏如何改進設計,以實現我的目標,我需要對象模型來強制所有繼承類有孩子。同時我仍然希望能夠靈活地爲繼承類型使用基類型?
當我們不知道這些類應該如何協同工作時,設計解決方案有點難。你能不能做一些像「BaseMaster b = new FirstRealMaster();」 –
Clay07g
請檢查我的更新後的帖子。 – hardywang
爲什麼你不能只是返回'IMaster'?如果不執行'child'和'master',我不知道你想實現什麼。 –
apocalypse