Descriere:
Există două clase, A și B, I A moștenește clasa B, iar B este clasa părinte
Am setat proprietățile TestAttribute în clasa A și, respectiv, clasa B...
Apoi, să luăm caracteristicile obiectului, iar codul este următorul:
Am constatat că numărul de rezultate este 1, iar atributul este atributul setat de A, nu atributul stabilit de B, ca să nu mai vorbim de fuzionat, de ce este așa???
[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{} Există patru combinații posibile aici:
[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 ] Primul caz:
Dacă interogăm clasa Derive (vom vedea mai târziu cum să interoghăm proprietățile unei clase la rulare), vom descoperi că funcția Help nu există pentru că proprietatea moștenită este setată pe false.
Al doilea caz:
La fel ca în primul caz, pentru că moștenitul este setat și el pe fals.
A treia situație:
Pentru a explica al treilea și al patrulea caz, să adăugăm mai întâi ceva cod clasei derivate:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{} Acum să interogăm funcția Help, putem obține doar proprietățile clasei derivate, deoarece inherited este setat pe true, dar AllowMultiple este setat pe false. Prin urmare, caracteristica Ajutor a clasei de bază este suprascrisă de funcția de ajutor a clasei derivate.
A patra situație:
Aici vom vedea că clasa derivată are atât caracteristica Help a clasei de bază, cât și propria caracteristică Help, deoarece AllowMultiple este setat pe true.
|