Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 19862|Răspunde: 1

[Sursă] Moștenirea caracteristicilor .net/c# în detaliu

[Copiază linkul]
Postat pe 14.02.2017 11:13:38 | | |
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.







Precedent:Atribuire C# între două proprietăți ale obiectului
Următor:Eroare de tip neprinsă: a(...). părinți(...). și Sinele nu este o funcție
 Proprietarul| Postat pe 30.03.2017 09:35:49 |
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com