Beskrivning:
Det finns två klasser, A och B, I A ärver klass B, och sedan är B föräldraklassen
Jag har satt TestAttribut-egenskaperna i klass A respektive klass B...
Ta sedan objektets egenskaper, och koden är följande:
Jag upptäckte att antalet resultat är 1, och attributet är attributet som sätts av A, inte attributet av B, än mindre sammanslaget, varför är det så???
[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{} Det finns fyra möjliga kombinationer här:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = falsk, Inherited = falsk] [AttributeUsage(AttributeTargets.Class, AllowMultiple = sann, Ärvd = falsk] [AttributeUsage(AttributeTargets.Class, AllowMultiple = falsk, Inherited = sann] [AttributeUsage(AttributeTargets.Class, AllowMultiple = sann, Inherited = sann] Det första fallet:
Om vi frågar Derive-klassen (vi kommer senare att se hur man frågar en klasss egenskaper vid körning), kommer vi att upptäcka att Help-funktionen inte existerar eftersom den ärvda egenskapen är satt till false.
Andra fallet:
Samma sak som i det första fallet, eftersom ärvt också sätts till falskt.
Den tredje situationen:
För att förklara det tredje och fjärde fallet, låt oss först lägga till lite kod till den härledda klassen:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{} Nu ska vi fråga Hjälpfunktionen, vi kan bara få egenskaperna för den härledda klassen, eftersom inherited är satt till true, men AllowMultiple är satt till false. Därför åsidosätts basklassens hjälpfunktion av hjälpfunktionen för den härledda klassen.
Den fjärde situationen:
Här kommer vi att se att den härledda klassen har både basklassens Hjälpfunktion och sin egen Hjälpfunktion, eftersom AllowMultiple är satt till sann.
|