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

から派生

System.Web.UI.WebControls.UI.TableCell

したがって、署名付きのメソッドfoo(TableCell tc){}

TableHeaderCell のインスタンスを受け入れます。

ただし、2 つの新しいクラスを作成し、一方を派生さTableCellせ、もう一方を派生させたTableHeaderCell場合、新しい TableHeaderCell クラスは直接関連していないため、新しい TableCell クラスにキャストできません。

とにかくこれを回避する方法はありますか?いいえと思います。

4

2 に答える 2

3

こういうヒエラルキーってこと?

                  TableCell
                 /         \
                /           \
        TableHeaderCell   CustomTableCell
              /
             /                
  CustomTableHeaderCell

いいえ、その場合は にキャストできませんでしCustomTableHeaderCellCustomTableCell

この場合、本当に継承が必要ですか? 代わりにコンポジションを使用できますか? または、インターフェイスを作成CustomTableCellしてCustomTableHeaderCell実装できますか? ICustomCellあなたがやろうとしていることについてもっと情報を提供できれば、それは役に立ちます。

于 2010-01-20T11:18:52.610 に答える
0

少なくとも目標が foo() を呼び出せるようにすることである場合は、それらすべてを TableCell オブジェクトとして参照し続けることができます。

于 2010-01-20T13:18:20.423 に答える