我正在使用一個虛構的例子。我說,我有一個Widget類,如:通用類的通用父類
abstract class Widget
{
Widget parent;
}
現在,我的其他類將從該小組件類派生,但假設我想提出一些約束的類在定義派生類型,僅特定的窗口小部件的「類型」可以是特定類型的窗口小部件的父類。
例如,我從Widget類WidgetParent和WidgetChild派生了兩個小部件。在定義子類時,我想將父類型定義爲WidgetParent,以便每次使用時都不必鍵入父類型。
準確地說,我也喜歡做的是這樣的:
// This does not works!
class Widget<PType>: where PType: Widget
{
PType parent;
}
class WidgetParent<Widget>
{
public void Slap();
}
class WidgetChild<WidgetParent>
{
}
所以,當我想訪問的,而不是用這種方式WidgetChild的母公司:
WidgetParent wp = wc.parent as WidgetParent;
if(wp != null)
{
wp.Slap();
}
else throw FakeParentException();
我想用這種方式(如果我可以使用泛型):
wc.parent.Slap();
謝謝你的努力,chakrit。我詳細說明了使用情況。 – nullDev 2008-11-04 07:09:57
好吧,我現在看到。我回家後會編輯。 – chakrit 2008-11-04 07:50:07