Опис:
Існує два класи: 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 стані.
|