Kuvaus:
On olemassa kaksi luokkaa, A ja B, I A perii luokan B, ja B on emoluokka
Olen asettanut TestAttribute-ominaisuudet luokkiin A ja luokkaan B vastaavasti...
Sitten otetaan objektin ominaisuudet, ja koodi on seuraava:
Huomasin, että tulosten määrä on 1, ja attribuutti on A:n määrittämä attribuutti, ei B:n määrittämä attribuutti, saati sitten yhdistetty, miksi näin on???
[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{} Tässä on neljä mahdollista yhdistelmää:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = epätosi, peritty = epätosi] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = epätosi] [AttributeUsage(AttributeTargets.Class, AllowMultiple = epätosi, Peritty = tosi] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true] Ensimmäinen tapaus:
Jos kysymme Derive-luokkaa (katsotaan myöhemmin, miten luokan ominaisuuksia haetaan ajonaikaisesti), huomaamme, että Help-ominaisuutta ei ole, koska peritty ominaisuus on asetettu vääräksi.
Toinen tapaus:
Sama kuin ensimmäisessä tapauksessa, koska peritty on myös asetettu vääräksi.
Kolmas tilanne:
Selittääksemme kolmannen ja neljännen tapauksen, lisätään ensin koodia johdettuun luokkaan:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{} Nyt kysytään Help-ominaisuudesta, saamme vain johdetun luokan ominaisuudet, koska inherited on asetettu tosi, mutta AllowMultiple on asetettu false. Näin ollen perusluokan Help-ominaisuus ohitetaan johdetun luokan help-ominaisuudella.
Neljäs tilanne:
Tässä löydämme, että johdetulla luokalla on sekä perusluokan Help-ominaisuus että oma Help-ominaisuutensa, koska AllowMultiple on asetettu true-arvoon.
|