views:

52

answers:

2
System.Web.UI.WebControls.UI.TableHeaderCell

derives from

System.Web.UI.WebControls.UI.TableCell

So a method with the signature foo(TableCell tc){}

Will accept instances of TableHeaderCell.

However if i create two new classes and derive one from TableCell and the other from TableHeaderCell then my new TableHeaderCell class will obviously not be able to cast into my new TableCell class as they are not directly related.

Is there anyway to get around this? Im guessing no.

+3  A: 

You mean a hierarchy like this?

                  TableCell
                 /         \
                /           \
        TableHeaderCell   CustomTableCell
              /
             /                
  CustomTableHeaderCell

No, in that case you couldn't cast CustomTableHeaderCell to CustomTableCell.

Are you sure you really need inheritance in this case? Could you use composition instead? Or could you make CustomTableCell and CustomTableHeaderCell implement an ICustomCell interface? If you could give us more information about what you're trying to do, that would help.

Jon Skeet
A: 

You could just keep referring to all of them as TableCell objects, at least if the goal is to be able to call your foo().

LaustN