У меня есть абстрактный класс, назовем его Base
. Затем у меня есть несколько классов, унаследованных от Base
, как в этом примере:
public class Actual : Base
{
...
}
Я хочу определить, является ли фактический тип (а не абстрактная база) во время выполнения специфицированным c типом ( с использованием ключевое слово ). Это делается в методе, который принимает любой класс, который наследуется от Base
:
public void Method(Base input)
{
if (input.GetType() is Actual)
{
// do something
}
}
Это дает мне предупреждение в Visual Studio (2019), в котором говорится, что:
CS0184: Данное выражение никогда не относится к предоставленному («Фактическому») типу
Почему это? Класс Actual
- лишь один из многих, наследуемых от Base
. Так что никоим образом не указано, что он будет такого типа во время выполнения ...
Примечание:
Я пытался следовать Actual
, используя Ctrl
+ Click
, и я сделал то же самое для Base
. В обоих случаях я попадаю в ожидаемые классы. Кроме того, нет повторяющихся имен классов ни в одной из сборок, участвующих в решении.