У меня есть несколько классов (один из которых называется Pet
), которые расширяют класс Animal
. Если у меня есть общий метод, могу ли я использовать typeof
для сравнения с базовым классом?Рассмотрите все унаследованные классы при использовании typeof
if (typeof(T) == typeof(Animal))
{
return ((Animal)pet).Color;
}
Что происходит в моем коде, так это то, что этот раздел полностью пропускается. Это нежелательно в этом конкретном примере, так как Pet
наследует от Animal
.
Почему бы вам не попробовать работает это выяснить. Обратите внимание, что даже если бы вы могли, вы не должны *. Обычно это признак плохо разработанного кода, который должен явно проверять тип объекта. – Servy
Используйте 'if (pet is Animal)' или 'Animal a = pet as Animal; if (a! = null) return a.Color; ' –
@Servy Я задаю вопрос, потому что код, который у меня в настоящее время не работает. –