Definisco essenzialmente IFoo
due volte nella classe Inherited. Ciò causa alcune conseguenze impreviste?Definizione dell'interfaccia più volte nella classe ereditata
interface IFoo {
...
}
interface IBar : IFoo {
...
}
class Base : IFoo {
...
}
class Derived : Base, IBar {
...
}
Il motivo che voglio fare IBar
erediti da IFoo
è così posso lavorare su Derived
come era IFoo
senza dover per lanciarla.
if (Derived is IBar)
// Do work
Se non eredita, devo scriverlo. Che rende più complicato, e gli utenti della classe potrebbero non capire che IBar
è solo una specializzazione di IFoo
.
if (Derived is IBar)
Derived as IFoo
// Do work
Questa cattiva pratica? Quali altre soluzioni ci sono per questo problema?
Perché vuoi fare 'if (Derived is IBar) Derivato come IFoo'? Perché invece 'if (Derived is IFoo)' invece? –
Perché IBar è un'interfaccia marcatore che mi dice che "Derivato" è di un tipo specifico. In questo modo posso tenere tutto IFoo in una collezione e lavorare con tutti loro. Dovrei solo "lavorare" sui tipi di IBar che posso fare .OfType. –