我有一個類M和許多派生類A的類型轉換部件M派生類
派生類A,B,C是明顯不同的,否則他們不已被宣佈。
M實現了一個需要知道調用類的類型的成員。
所以,今天我在M中使用一個抽象成員,並在每個dervied類中單獨覆蓋。
在L:
public abstract Do() {};
在一個:
public override void Do()
{
DoMore<A>();
}
在B:
public override void Do()
{
DoMore<B>();
}
在C:
public override void Do()
{
DoMore<C>();
}
是有沒有一種方法可以在M
中爲所有派生類實現Do()
?喜歡的東西:
採用M:
public Do<T>() {
DoMore<T>();
}
因爲DoMore()
是在派生類鑄造這是行不通的。
如果'DoMore'需要做具體的每一個派生類的東西爲什麼是不是也抽象/虛擬? –
「更大」的類型不應該知道它的任何派生一次。你確定基類是你真正需要的嗎?你需要派生類型的特定成員嗎? –
你可以像'void DoMore(Type t)'一樣更改'DoMore'方法嗎? – Vlad