Просто любопытно, MSDN говорит, что
Вызов этого метода всегда вызывает InvalidCastException.
Итак, почему эта перегрузка существует в структуре? Это какой-то шаблон? Я предполагаю, что для обратной совместимости было бы лучше удалить перегрузку и получать ошибки компиляции, а не исключения времени выполнения. Я не помню, действительно ли этот метод поддерживался в предыдущих фреймворках.