Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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