Не думаю, что стоит этим вообще заморачиваться.
Когда есть экземпляр объекта то можно проверить его через IsInstanceOfType, когда только типы данных тогда IsAssignableFrom
метод может например сказать нам может ли int быть приведен к float
Такое исключено, наследование и конвертация значимых типов данных совсем разные штуки
PS Обычно придерживаюсь такой практики: пишу как понимаю интуитивно, если возникают проблемы начинаю копать.