Все равно придется в каком-то месте писать какому сообщение какой тип соответствует. И это будет не малкнький список.
в нормальном языке есть clauses - erlang\haskell, в мейнстриме есть перегрузка методов. компилятор за меня решит, какой метод вызвать, глядя на тип параметра. в эфшарпе че-то ничего в голову не приходит