Beskrivelse:
Der er to klasser, A og B, I A arver klasse B, og derefter er B forældreklassen
Jeg har sat TestAttribut-egenskaberne i henholdsvis klasse A og klasse B...
Tag derefter objektets karakteristika, og koden er som følger:
Jeg fandt ud af, at antallet af resultater er 1, og attributten er attributten sat af A, ikke attributmængden fra B, for slet ikke at tale om merged – hvorfor er det sådan???
[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{} Der er fire mulige kombinationer her:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = falsk, Inherited = falsk] [AttributeUsage(AttributeTargets.Class, AllowMultiple = sand, Inherited = falsk] [AttributeUsage(AttributeTargets.Class, AllowMultiple = falsk, Inherited = sand] [AttributeUsage(AttributeTargets.Class, AllowMultiple = sand, Inherited = true] Den første sag:
Hvis vi forespørger Derive-klassen (vi ser senere, hvordan man forespørger en klasses egenskaber under kørsel), vil vi opdage, at Help-funktionen ikke eksisterer, fordi den arvede egenskab er sat til falsk.
Anden sag:
Det samme gælder i det første tilfælde, fordi inherited også sættes til falsk.
Den tredje situation:
For at forklare det tredje og fjerde tilfælde, lad os først tilføje noget kode til den afledte klasse:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{} Lad os nu forespørge Hjælp-funktionen, vi kan kun få egenskaberne for den afledte klasse, fordi inherited sættes til true, men AllowMultiple er sat til false. Derfor overstyres Hjælp-funktionen i basisklassen af hjælpefunktionen i den afledte klasse.
Den fjerde situation:
Her vil vi finde, at den afledte klasse både har basisklassens Hjælpefunktion og sin egen Hjælp-funktion, fordi AllowMultiple er sat til true.
|