我有以下情况:
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 }
}
}
班级TextBoxCellControl
和DataGridViewCell
不受我的控制,我需要EnhancedTextBoxCellControl
从Panel继承。
这种情况是否有一些解决方案,因此EnhancedTextBoxCellControl
可以模拟它封装的TextBox?不可能以某种方式对强制转换为TextBox 并返回encapsulatedTextBox
而不是this
(鸭子类型转换)?
答案 0 :(得分:2)
不,这是不可能的,因为B必须从Panel继承而C的实现是私有的。
唯一真正的选择是继承自C并在继承的类构造函数中执行自己的逻辑。