Opis:
Obstajata dva razreda, A in B, I A podeduje razred B, B pa je razred starša
Lastnosti TestAttribute sem nastavil v razredu A in razredu B...
Nato vzamemo značilnosti objekta in koda je naslednja:
Ugotovil sem, da je število rezultatov 1, atribut pa je atribut, ki ga nabere A, ne pa atribut, ki ga nabere B, kaj šele združen, zakaj je tako???
[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{} Tu so štiri možne kombinacije:
[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] Prvi primer:
Če poizvedujemo razred Derive (kasneje bomo videli, kako poizvedovati lastnosti razreda med izvajanjem), bomo ugotovili, da funkcija Pomoč ne obstaja, ker je podedovana lastnost nastavljena na false.
Drugi primer:
Enako kot v prvem primeru, ker je podedovano tudi nastavljeno na napačno.
Tretja situacija:
Za razlago tretjega in četrtega primera najprej dodajmo nekaj kode k izpeljanemu razredu:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{} Zdaj poizvedimo s funkcijo Pomoč, lahko dobimo le lastnosti izpeljanega razreda, ker je podedovano nastavljeno na true, AllowMultiple pa na false. Zato je funkcija Pomoč osnovnega razreda preglasena s funkcijo pomoči izpeljanega razreda.
Četrta situacija:
Tukaj bomo ugotovili, da ima izpeljani razred tako funkcijo Help kot osnovni razred in svojo lastno funkcijo Help, ker je AllowMultiple nastavljen na true.
|