例子:C#泛型繼承的解決辦法
我想有一個無論從文本框或RichTextBox中派生幾個專門的文本框,這無論從Control派生:
class CommonFeatures<T> : T where T : TextBoxBase
{
// lots of features common to the TextBox and RichTextBox cases, like
protected override void OnTextChanged(TextChangedEventArgs e)
{
//using TextBoxBase properties/methods like SelectAll();
}
}
然後
class SpecializedTB : CommonFeatures<TextBox>
{
// using properties/methods specific to TextBox
protected override void OnTextChanged(TextChangedEventArgs e)
{
... base.OnTextChanged(e);
}
}
and
class SpecializedRTB : CommonFeatures<RichTextBox>
{
// using methods/properties specific to RichTextBox
}
不幸的是
class CommonFeatures<T> : T where T : TextBoxBase
不編譯(「無法從‘T’派生,因爲它是一個類型參數」)。
有沒有很好的解決方案呢?謝謝。
它應該是類CommonFeatures其中T:TextBoxBase –
2011-05-22 20:08:00
@Tomas Voracek好這一點,類CommonFeatures:其中T:TextBoxBase因爲CommonFeatures需要從它繼承TextBoxBase的方法/屬性,否則事情像OnTextChanged唐一類派生不存在。如果我直接從TextBoxBase繼承,如何從RichTextBox或TextBox稍後添加屬性/方法,而沒有多重繼承... –
SemMike
2011-05-22 20:23:44