Aceitação de um conjunto limitado de subtipos em um argumento de método
Pergunta
Este é com C # e .NET 3.5
Vamos dizer que eu tenho o seguinte método:
myMethod(myBaseClass mbc)
No meu projeto, todas as seguintes classes herdam myBaseClass.
ot1:myBaseClass
ot2:myBaseClass
ot3:myBaseClass
ot4:myBaseClass
Existem truques que vai me deixar usar myMethod com OT1 e OT3 mas não OT2 e OT4, ou eu basicamente tem que sobrecarga para cada tipo eu quero permitir que?
Solução
Uma interface. Mude sua assinatura do método para
myMethod(ICastableAsMyBaseClass mbc)
Então, OT1 e OT3 implementar ICastableAsMyBaseClass
.
Outras dicas
Você pode verificar a classe de mbc em tempo de execução, mas obviamente que não iria impedi-lo de chamar o método com o tempo errado em tempo de compilação.
Se você quiser tempo de compilação typechecking você precisa sobrecarregar o método para cada tipo que você deseja permitir.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow