private void SomeMethod(DerivedA something) {...}
private void SomeMethod(DerivedB something) {...}
private void SomeMethod(DerivedC something) {...}
BaseClass bc = somevariable;
if (bc is DerivedA) Somemethod(bc as DerivedA)
else if (bc is DerivedB) Somemethod(bc as DerivedB)
else if (bc is DerivedC) Somemethod(bc as DerivedC)
...
else if (bc is DerivedZZ) Somemethod(bc as DerivedZZ)
在.NET 3.5中,必須有一個更簡單的方法,不是嗎?更簡單的方法來檢查和調用過載的方法
SomeMethod是對象應該做的事情還是外部力量對對象做的事情? –
爲了澄清,我正在使用的類不是DerivedX,而是作用於DerivedA ... DerivedZ並調用方法來做不同的事情。基本上,我試圖避免一個大的switch語句(或if/else)並決定執行SomeMethod(派生A)。我可以完成SomeMethodActOnDerivedA,SomeMethodActOnDerivedB等。將它想象成具有各種用戶控件的頁面,並且這些用戶控件具有共享的基類,但需要分別填充和採取行動。 –
也許typeof()可以爲你做這項工作? –