Beskrivelse:
Det finnes to klasser, A og B, I A arver klasse B, og så er B foreldreklassen
Jeg har satt TestAttribut-egenskapene i henholdsvis klasse A og klasse B...
Ta deretter egenskapene til objektet, og koden er som følger:
Jeg fant ut at antall resultater er 1, og attributtet er attributtet satt av A, ikke attributtsettet av B, for ikke å snakke om sammenslått – hvorfor er det slik???
[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{} Det finnes fire mulige kombinasjoner her:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = falsk, Inherited = false ] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false ] [AttributeUsage(AttributeTargets.Class, AllowMultiple = falsk, Inherited = true ] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true ] Det første tilfellet:
Hvis vi spør Derive-klassen (vi skal se senere hvordan man spør en klasses egenskaper under kjøring), vil vi finne at Help-funksjonen ikke eksisterer fordi den arvede egenskapen er satt til falsk.
Andre tilfelle:
Samme som i det første tilfellet, fordi inherited også settes til falsk.
Den tredje situasjonen:
For å forklare det tredje og fjerde tilfellet, la oss først legge til litt kode i den avledede klassen:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{} La oss nå spørre i Hjelp-funksjonen, vi kan bare hente egenskapene til den avledede klassen, fordi inherited settes til true, men AllowMultiple er satt til false. Derfor overstyres Hjelpefunksjonen til basisklassen av hjelpefunksjonen til den avledede klassen.
Den fjerde situasjonen:
Her vil vi finne at den avledede klassen har både Help-funksjonen til basisklassen og sin egen Help-funksjon, fordi AllowMultiple er satt til true.
|