Я со странным кастингом в F# столкнулась, когда в интерпретаторе поднимала целый паровоз из сервисов - куча сервисов регалась в стандартном ServiceContainer, потом он билдился в ServiceProvider, а потом не кастовался к IServiceProvider выдавая кастэксепшен с портянкой из рантайма фарша.
Завтра пример этого кода кину.