鑑於方案繼承類的方法...呼叫通過接口
interface IBase{
void Process(int value);
}
abstract class Base : IBase
{
public virtual void Process(int value){ throw new NotImplementedException(); }
}
class Implemented: Base, IBase
{
public void Process(int value)
{
// .. some code here..
}
}
我想寫類似如下的循環。
foreach(Base b in CollectionOfImplemented)
{
b.Process(// something will go here //);
}
嘗試此操作,它會一直調用Base.Process,而不是Implemented.Process;但集合中的類型是已實現的,而不是基本的。拳擊它似乎工作,但我希望看看我是否能找到一個更聰明的方法,因爲該集合將包含其他類型的對象,也繼承了基地。
Visual Studio的一個優秀功能是在子類中,您可以開始輸入單詞「覆蓋」,而智能感知系統會告訴您哪些虛擬方法可以被覆蓋。 – Stephen 2010-05-25 17:31:29