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

Изглед: 20410|Отговор: 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 = 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.







Предишен:C# присвояване между две свойства на обекта
Следващ:Неоткрит TypeError: a(...). родители(...). andSelf не е функция
 Хазяин| Публикувано в 30.03.2017 г. 9:35:49 ч. |
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com