Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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 = false, Inherited = false ]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false ]  
[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# между двумя свойствами объекта
Следующий:Незафиксированный типОшибка: a(...). родители(...). а Я — это не функция
 Хозяин| Опубликовано 30.03.2017 9:35:49 |
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com