C#在演员表中模仿封装的类

时间:2012-01-02 19:42:23

标签: c# oop

我有以下情况:

class TextBoxCellControl : TextBox, IDataGridViewCellControl 

class EnhancedTextBoxCellControl  : Panel, IDataGridViewCell
{ 
   private TextBox encapsulatedTextBox; 
   private Button button; 
   ...
}

class DataGridViewCell
{ 
    private IDataGridViewCellControl cellControl;

    void foo() 
    {
      TextBox tb = cellControl as TextBox;
      if (tb != null) { do something } 
    }
} 

班级TextBoxCellControlDataGridViewCell不受我的控制,我需要EnhancedTextBoxCellControl从Panel继承。

这种情况是否有一些解决方案,因此EnhancedTextBoxCellControl可以模拟它封装的TextBox?不可能以某种方式对强制转换为TextBox 并返回encapsulatedTextBox而不是this(鸭子类型转换)?

1 个答案:

答案 0 :(得分:2)

不,这是不可能的,因为B必须从Panel继承而C的实现是私有的。

唯一真正的选择是继承自C并在继承的类构造函数中执行自己的逻辑。