Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 63994|Отговор: 1

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

[Копирай линк]
Публикувано в 18.11.2019 г. 11:45:09 ч. | | |
Понякога трябва да определим дали даден клас реализира интерфейс, например при използване на механизъм за отражение за намиране на конкретен тип.

С прости думи, можете да използвате метода Type.IsAssignableFrom:

IsAssignableFrom показва дали типът BarClass може да бъде присвоен на интерфейса на IFoo, така че условието за връщане на true е BarClass директно или косвено да реализира интерфейса IFoo. Съществува и метод в типа тип, IsSubclassOf, който еСамоИзползва се за оценка на наследствените отношения на класове, като например

Показва, че FooClass се наследява от BarClass.

Разбира се, IsAssignableFrom може да се използва и за определяне на наследяването.

И така, за следния код:

interface 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 Timestamp (10-битов)
Следващ:EF Core pit: DbContextPool причинява изчерпване на връзката в базата данни
 Хазяин| Публикувано в 19.03.2021 г. 13:39:47 ч. |
Получава обект, който наследява генеричен базов клас

Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com