apibūdinimas:
Yra dvi klasės, A ir B, I A paveldi B klasę, o tada B yra pirminė klasė
Aš nustatiau TestAttribute savybes atitinkamai A ir B klasėse...
Tada paimkite objekto charakteristikas, o kodas yra toks:
Radau, kad rezultatų skaičius yra 1, o atributas yra atributas, kurį nustato A, o ne atributas, kurį nustato B, jau nekalbant apie sujungtą, kodėl taip yra???
[Help("BaseClass")] publicclass base{} publicclass išvesti : base{} Čia yra keturi galimi deriniai:
[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 ] Pirmasis atvejis:
Jei pateiksime užklausą klasei Derive (vėliau pamatysime, kaip vykdyti klasės ypatybių užklausą), pamatysime, kad žinyno funkcijos nėra, nes paveldėta ypatybė nustatyta kaip false.
Antrasis atvejis:
Tas pats kaip ir pirmuoju atveju, nes paveldėtas taip pat nustatytas kaip false.
Trečioji situacija:
Norėdami paaiškinti trečią ir ketvirtą atvejus, pirmiausia pridėkime šiek tiek kodo prie išvestinės klasės:
[Help("BaseClass")] publicclass base{}[Help("DeriveClass")] publicclass išvesti : base{} Dabar užklauskime žinyno funkcijos, galime gauti tik išvestinės klasės ypatybes, nes paveldėta nustatyta kaip teisinga, o AllowMultiple nustatyta kaip klaidinga. Todėl pagrindinės klasės žinyno funkciją pakeičia išvestinės klasės žinyno funkcija.
Ketvirtoji situacija:
Čia rasime, kad išvestinė klasė turi ir pagrindinės klasės žinyno funkciją, ir savo žinyno funkciją, nes AllowMultiple nustatyta kaip teisinga.
|