我基本上在Inherited類中定義了兩次IFoo
。這是否會導致一些無法預料的後果?在繼承類上多次定義接口
interface IFoo {
...
}
interface IBar : IFoo {
...
}
class Base : IFoo {
...
}
class Derived : Base, IBar {
...
}
我要讓IBar
繼承IFoo
的原因是這樣我就可以Derived
工作,因爲它是IFoo
而不必強制轉換。
if (Derived is IBar)
// Do work
如果它不繼承,我必須施放它。這使得使用更加複雜,並且該類的用戶可能不瞭解IBar
只是IFoo
的專業化。
if (Derived is IBar)
Derived as IFoo
// Do work
這是不好的做法?對於這個問題還有哪些其他解決方案?
爲什麼你想要做if(Derived is IBar)Derived as IFoo'?爲什麼不'if(派生是IFoo)'而不是? –
因爲IBar是一個標記接口,它告訴我「派生」是一個特定的類型。這樣我可以將所有IFoo保存在一個集合中,並與他們一起工作。我應該只需要在IBar類型上「做功」就可以做.OfType。 –