Accettare un insieme limitato di sottotipi in un argomento del metodo
Domanda
Questo è con C # e .NET 3.5
Diciamo che ho il seguente metodo:
myMethod(myBaseClass mbc)
Nel mio progetto, tutte le seguenti classi ereditano da myBaseClass.
ot1:myBaseClass
ot2:myBaseClass
ot3:myBaseClass
ot4:myBaseClass
Ci sono trucchi che mi ha lasciato usare myMethod con ot1 e OT3 ma NON OT2 e OT4, o devo sostanzialmente avere sovraccaricare per ogni tipo voglio permettere?
Soluzione
Un'interfaccia. Cambia la tua firma metodo per
myMethod(ICastableAsMyBaseClass mbc)
Poi hanno ot1 e OT3 implementare ICastableAsMyBaseClass
.
Altri suggerimenti
Si potrebbe verificare la classe di MBC in fase di esecuzione, ma, ovviamente, che non ci si impedisce di chiamare il metodo con il momento sbagliato al momento della compilazione.
Se si desidera a tempo di compilazione typechecking è necessario sovraccaricare il metodo per ogni tipo che si desidera consentire.