Kirjeldus:
On kaks klassi, A ja B, I A pärib klassi B ja siis on B vanemklass
Olen seadistanud TestAttribute omadused vastavalt klassi A ja klassi B...
Seejärel võtame objekti omadused ja kood on järgmine:
Leidsin, et tulemuste arv on 1 ja atribuut on A poolt seatud atribuut, mitte B atribuut, rääkimata ühendamisest, miks see nii on???
[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{} Siin on neli võimalikku kombinatsiooni:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = vale, päritud = vale] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = vale] [AttributeUsage(AttributeTargets.Class, AllowMultiple = vale, päritud = tõene] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true] Esimene juhtum:
Kui me pärime Derive-klassi kohta (näeme hiljem, kuidas pärida klassi omadusi käitusajal), leiame, et Abi funktsiooni ei eksisteeri, sest pärandatud omadus on seatud vääraks.
Teine juhtum:
Sama mis esimeses juhtumis, sest pärandatud on samuti seatud vääraks.
Kolmas olukord:
Kolmanda ja neljanda juhtumi selgitamiseks lisame esmalt tuletatud klassile koodi:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{} Nüüd pärime Abi funktsiooni, saame ainult tuletatud klassi omadused, sest pärandatud on seatud tõeseks, aga AllowMultiple on seatud vääraks. Seetõttu ületab baasklassi abifunktsiooni tuletatud klassi abifunktsioon.
Neljas olukord:
Siin leiame, et tuletatud klassil on nii baasklassi Abi funktsioon kui ka oma Abi funktsioon, sest AllowMultiple on seatud tõele.
|