Apraksts:
Ir divas klases, A un B, I A manto B klasi, un tad B ir vecāku klase
Es esmu iestatījis TestAttribute īpašības attiecīgi A un B klasē ...
Pēc tam ņemiet objekta īpašības, un kods ir šāds:
Es atklāju, ka rezultātu skaits ir 1, un atribūts ir atribūts, ko nosaka A, nevis atribūts, ko nosaka B, nemaz nerunājot par sapludināšanu, kāpēc tas ir???
[Help("BaseClass")] publicclass base{} publicclass atvasināt : base{} Šeit ir četras iespējamās kombinācijas:
[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 ] Pirmais gadījums:
Ja mēs vaicājam klasi Derive (vēlāk redzēsim, kā vaicāt klases rekvizītus izpildes laikā), mēs konstatēsim, ka palīdzības līdzeklis nepastāv, jo mantotais rekvizīts ir iestatīts uz false.
Otrais gadījums:
Tāpat kā pirmajā gadījumā, jo mantotais ir arī iestatīts uz false.
Trešā situācija:
Lai izskaidrotu trešo un ceturto gadījumu, vispirms pievienosim atvasinātajai klasei kodu:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass atvasināt : Base{} Tagad vaicāsim palīdzības funkciju, mēs varam iegūt tikai atvasinātās klases īpašības, jo mantotais ir iestatīts uz true, bet AllowMultiple ir iestatīts uz false. Tāpēc pamatklases palīdzības līdzekli ignorē atvasinātās klases palīdzības līdzeklis.
Ceturtā situācija:
Šeit mēs atradīsim, ka atvasinātajai klasei ir gan pamatklases palīdzības funkcija, gan sava palīdzības funkcija, jo AllowMultiple ir iestatīts uz true.
|