C# 派生类继承方式是否不同?
源于C# 派生类继承方式是否不同?,c#,casting,derived-class,C#,Casting,Derived Class,源于 System.Web.UI.WebControls.UI.TableHeaderCell 所以一个签名为foo(TableCell tc){} 将接受TableHeaderCell的实例 但是,如果我创建两个新类,其中一个派生自TableCell,另一个派生自TableHeaderCell,那么我的新TableHeaderCell类显然无法转换到我的新TableCell类中,因为它们没有直接的关联 有什么办法可以解决这个问题吗?我猜不会。你是说这样的等级制度 System.Web.UI.
System.Web.UI.WebControls.UI.TableHeaderCell
所以一个签名为foo(TableCell tc){}
将接受TableHeaderCell的实例
但是,如果我创建两个新类,其中一个派生自TableCell
,另一个派生自TableHeaderCell
,那么我的新TableHeaderCell类显然无法转换到我的新TableCell类中,因为它们没有直接的关联
有什么办法可以解决这个问题吗?我猜不会。你是说这样的等级制度
System.Web.UI.WebControls.UI.TableCell
不,在这种情况下,您无法将CustomTableHeaderCell
强制转换为CustomTableCell
你确定在这种情况下你真的需要继承吗?你能用作文代替吗?或者您可以让
CustomTableCell
和CustomTableHeaderCell
实现ICustomCell
接口吗?如果你能给我们更多关于你想做什么的信息,那会有帮助。你可以继续把它们都称为TableCell对象,至少如果你的目标是能够调用你的foo()。虽然你说的是“显而易见的”(见Jon的图表),但这并不是因为“派生类继承方式不同”。这仅仅是因为C#没有多重继承。
TableCell
/ \
/ \
TableHeaderCell CustomTableCell
/
/
CustomTableHeaderCell