Описание:
Има два класа – A и B, I A наследява клас B, а B е родителският клас
Зададох свойствата на TestAttribute съответно в клас A и клас B...
След това вземете характеристиките на обекта и кодът е следният:
Открих, че броят на резултатите е 1, а атрибутът е атрибутът, зададен от A, а не атрибутът, зададен от B, камо ли сливан, защо е така???
[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{} Тук има четири възможни комбинации:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false ] [AttributeUsage(AttributeTargets.Class, AllowMultiple = вярно, наследено = невярно] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true ] Първият случай:
Ако направим заявка към класа Derive (ще видим по-късно как да правим заявка към свойствата на клас по време на изпълнение), ще установим, че функцията Help не съществува, защото наследеното свойство е зададено на false.
Втори случай:
Същото като в първия случай, защото наследеното също се задава на false.
Третата ситуация:
За да обясним третия и четвъртия случай, нека първо добавим малко код към производния клас:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{} Сега нека направим запитване към функцията Help, можем да получим само свойствата на производния клас, защото наследеното е зададено на true, а AllowMultiple е зададено на false. Следователно функцията Help на базовия клас се замества от функцията за помощ на производния клас.
Четвъртата ситуация:
Тук ще установим, че производният клас има както функцията Help на базовия клас, така и собствената си Help, тъй като AllowMultiple е настроен на true.
|