Could you give one simple example where dynamic_cast is really needed and does not violate some principles?
dynamic_cast