Leírás:
Két osztály van, A és B, az I A örökli a B osztályt, majd B az anyaosztály
A TestAttribute tulajdonságokat beállítottam az A osztályba és a B osztályba...
Ezután vegyük az objektum jellemzőit, és a kód a következő:
Azt tapasztaltam, hogy az eredmények száma 1, és az attribútum az A által halmazon lévő attribútum, nem pedig a B által halmazolt attribútum, nemhogy az összevont tulajdonság, miért van ez így???
[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{} Itt négy lehetséges kombináció létezik:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = hamis, Örökölt = hamis] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = hamis] [AttributeUsage(AttributeTargets.Class, AllowMultiple = hamis, Örökölt = igaz] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true ] Az első eset:
Ha lekérdezzük a Derive osztályt (később meglátjuk, hogyan lehet futásidőben lekérdezni egy osztály tulajdonságait), azt találjuk, hogy a Help funkció nem létezik, mert az örökölt tulajdonság hamisnak van beállítva.
Második eset:
Ugyanúgy, mint az első esetben, mert az öröklött is hamisnak van állítva.
A harmadik helyzet:
A harmadik és negyedik eset magyarázatához először adjunk hozzá némi kódot a származtatott osztályhoz:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{} Most kérdezzük meg a Help funkciót, csak a származtatott osztály tulajdonságait tudjuk megkapni, mert az öröklött igazra van állítva, de az AllowMultiple false-nak van állítva. Ezért az alaposztály Help funkcióját felülírja a származtatott osztály segítő funkciója.
A negyedik helyzet:
Itt azt találjuk, hogy a származtatott osztály mind az alap osztály Help funkciója, mind a saját Help funkciója van, mert az AllowMultiple true-ra van állítva.
|