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

Вид: 19862|Відповідь: 1

[Джерело] Детально спадкування ознак .net/c#

[Копіювати посилання]
Опубліковано 14.02.2017 11:13:38 | | |
Опис:

Існує два класи: A і B, I A успадковує клас B, а B — батьківський клас

Я встановив властивості TestAttribute у класі A та класі B відповідно...

Потім візьмемо характеристики об'єкта, і код виглядає так:



Я з'ясував, що кількість результатів — 1, і атрибут — це атрибут, встановлений A, а не атрибут, встановлений B, не кажучи вже про об'єднання, чому так???


[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{}
Тут є чотири можливі комбінації:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = неправда, Спадкована = хибна]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false ]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = неправда, Inherited = true ]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true ]  
Перший випадок:

Якщо ми зробимо запит до класу Derive (пізніше побачимо, як запитувати властивості класу під час виконання), то виявимо, що ознака Help не існує, оскільки спадкована властивість встановлена як false.

Другий випадок:

Те саме, що й у першому випадку, оскільки успадкована також встановлена як хибна.



Третя ситуація:

Щоб пояснити третій і четвертий випадки, спочатку додамо код до похідного класу:

[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{}
Тепер давайте запитаємо ознаку Help, ми можемо отримати лише властивості похідного класу, оскільки inherited встановлено як true, а AllowMultiple — як false. Отже, функція Help базового класу замінюється функцією допомоги похідного класу.

Четверта ситуація:

Тут ми побачимо, що похідний клас має як функцію Допомога базового класу, так і власну функцію Довідки, оскільки AllowMultiple встановлений у true стані.







Попередній:Призначення C# між двома властивостями об'єкта
Наступний:Невиявлена TypeError: a(...). батьки(...). і Я не є функцією
 Орендодавець| Опубліковано 30.03.2017 09:35:49 |
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com