2010-01-20 73 views
2
System.Web.UI.WebControls.UI.TableHeaderCell 

派生類繼承不同嗎?

System.Web.UI.WebControls.UI.TableCell 

所以一個方法導出與簽名foo(TableCell tc){}

會接受TableHeaderCell的實例。

但是如果我創建兩個新的類和派生一個從TableCellTableHeaderCell其他然後我的新TableHeaderCell類顯然不能夠丟在我的新的TableCell類,因爲它們並沒有直接關係。

有沒有辦法解決這個問題?我猜沒有。

+0

雖然「明顯」你說的是真實的(參見喬恩的圖),但這不是因爲「派生類繼承不同」。這僅僅是因爲C#沒有多重繼承。 – 2010-01-20 11:26:43

回答

3

你的意思是這樣的層次結構?

    TableCell 
       /  \ 
       /   \ 
     TableHeaderCell CustomTableCell 
      /
      /    
    CustomTableHeaderCell 

沒有,在這種情況下,你可以不投CustomTableHeaderCellCustomTableCell

你確定在這種情況下你確實需要繼承嗎?你可以用組合物代替嗎?或者你可以讓CustomTableCellCustomTableHeaderCell實現一個ICustomCell接口?如果你能給我們提供更多關於你想要做什麼的信息,那會有所幫助。

0

至少如果目標是能夠調用你的foo(),你可以繼續將它們全部引用爲TableCell對象。