Indeed - there's no silver bullet, and a pragmatic approach is always preferred :)

Btw, in the article I linked, I don't move the conditionals anywhere. There is none.

I use dynamic type discovery to find command handlers at application startup, placing them in a dictionary I pass on to a dispatcher class.

All types are registered with the DI container.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store