Описание:
Существует два класса: 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.
|