作者james732 (好人超)
站内C_Sharp
标题[问题] 关於继承的问题
时间Sat Apr 4 17:09:49 2009
我现在利用继承 Label 实作了一个跑马灯:
public class Light : Label
{
// 一些相关的程式码
}
不过突然想到,我能不能让继承给 genetric 化,
让我的 Light 可以由 System.Windows.Forms.Control 的子孙里择一来继承:
譬如说,我想要这麽写:
void foo() // 某个函式
{
Light<Label> lblLight = new Light<Label>();
Light<Button> btnLight = new Light<Button>();
Light<TextBox> txtLight = new Light<TextBox>();
}
这样我就可以产生「继承自 Label, Button, Textbox」的跑马灯了。
原本的想法是改写成这样:
public class Light<T> : T
{
}
不过却出现错误讯息:
错误 1 无法由 'T' 衍生,因为它是型别参数
请问我应该要怎麽去修改,才能达到我的想法呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.121.235.85
1F:推 wvsrugby:有趣的想法! public class Light<T> where T : Control 04/04 20:12
2F:→ wvsrugby:感觉上此处不适合继承,将 Light 实作成装饰者会较恰当。 04/04 20:15
3F:→ Cloud:C++做得到,C#应该没法办到....QQ 04/10 09:41
4F:→ Cloud:我觉得C#的generic是run time具现化,因此这里没法知道 T 04/10 09:42