@Levente Nagy: You're talking about the VB type switch feature?
Type switches are needed sometimes. "Polymorphism" traditionally means that the method implementation is chosen based on the type of a single object, AKA "single dispatch". But this means it is no use if you have two objects and you need to use different code for different combinations of types, AKA "multiple dispatch".
Often when people encounter a situation like this they think "Oh, I must have designed my program all wrong. If I'd done it right, this situation wouldn't have happened". But it's not true. Some situations involve dynamic dispatch based on the type of more than one object.