派生类是否以不同方式继承?

时间:2010-01-20 11:13:20

标签: c# casting derived-class

System.Web.UI.WebControls.UI.TableHeaderCell

派生自

System.Web.UI.WebControls.UI.TableCell

所以签名为foo(TableCell tc){}

的方法

将接受TableHeaderCell的实例。

但是,如果我创建两个新类并从TableCell派生一个而从TableHeaderCell派生另一个,那么我的新TableHeaderCell类显然无法转换为我的新TableCell类,因为它们不直接相关。

有没有解决这个问题?我猜不了。

2 个答案:

答案 0 :(得分:3)

你的意思是这样的层次结构?

                  TableCell
                 /         \
                /           \
        TableHeaderCell   CustomTableCell
              /
             /                
  CustomTableHeaderCell

不,在这种情况下,您无法将CustomTableHeaderCell投射到CustomTableCell

在这种情况下你确定你真的需要继承吗?你可以使用构图吗?或者您可以让CustomTableCellCustomTableHeaderCell实现ICustomCell界面吗?如果您可以向我们提供有关您尝试做的更多信息,那将有所帮助。

答案 1 :(得分:0)

你可以继续将它们全部称为TableCell对象,至少目标是能够调用你的foo()。