Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 63994|Ответ: 1

[Источник] C# наследует определение IsAssignableFrom, IsSubclassOf

[Скопировать ссылку]
Опубликовано 18.11.2019 11:45:09 | | |
Иногда нужно определить, реализует ли класс интерфейс, например, при использовании механизма отражения для поиска конкретного типа.

Проще говоря, можно использовать метод Type.IsAssignableFrom:

IsAssignableFrom указывает, можно ли назначить тип BarClass интерфейсу IFoo, поэтому условием для возврата true является то, что BarClass напрямую или косвенно реализует интерфейс IFoo. Существует также метод типа типа IsSubclassOf, который являетсяТолькоИспользуется для оценки взаимосвязей наследования классов, таких как

Указывает, что FooClass унаследован от BarClass.

Конечно, IsAssignableFrom также может использоваться для определения наследования.

Итак, для следующего кода:

интерфейс I { /* ... */ }
класс А: I { /* ... */ }
класс B: A { /* ... */ }
Возвратные значения для IsSubclassOf и IsAssignableFrom следующие:

typeof(A).isAssignableFrom(typeof(I)); ложь
typeof(A).isSubClassOf(typeof(I)); ложь
  
typeof(I).isAssignableFrom(typeof(A)); Верно
typeof(I).isAssignableFrom(typeof(B)); Верно
typeof(B).isSubClassOf(typeof(I)); ложь
  
typeof(A).isAssignableFrom(typeof(A)); Верно
typeof(A).isSubClassof(typeof(A)); ложь
  
typeof(A).isAssignableFrom(typeof(B)); Верно
typeof(A).isSubClassof(typeof(B)); ложь
  
typeof(B).isAssignableFrom(typeof(A)); ложь
typeof(B).isSubClassof(typeof(A)); Верно






Предыдущий:Конвертация .NET Core временной метки (10-битная)
Следующий:EF Core pit: DbContextPool вызывает исчерпание соединений пула соединений базы данных
 Хозяин| Опубликовано 19.03.2021 13:39:47 |
Получает объект, который наследует общий базовый класс

Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com