Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 63994|Antwoord: 1

[Bron] C# erft de bepaling van IsAssignableFrom, IsSubclassOf

[Link kopiëren]
Geplaatst op 18-11-2019 11:45:09 | | |
Soms moeten we bepalen of een klasse een interface implementeert, bijvoorbeeld bij het gebruik van een reflectiemechanisme om een specifiek type te vinden.

In eenvoudige termen kun je de Type.IsAssignableFrom-methode gebruiken:

IsAssignableFrom geeft aan of het type BarClass kan worden toegewezen aan de IFoo-interface, dus de voorwaarde om waar te worden teruggegeven is dat BarClass direct of indirect de IFoo-interface implementeert. Er is ook een methode in het Type type, IsSubclassOf, die isAlleenGebruikt om erfopvolgingsrelaties van klassen te beoordelen, zoals

Geeft aan dat FooClass wordt geërfd van BarClass.

Natuurlijk kan IsAssignableFrom ook worden gebruikt om de erfenis te bepalen.

Dus, voor de volgende code:

interface I { /* ... */ }
klasse A : I { /* ... */ }
klasse B : A { /* ... */ }
De retourwaarden voor IsSubclassOf en IsAssignableFrom zijn:

typeof(A).isAssignableFrom(typeof(I)); vals
typeof(A).isSubClassOf(typeof(I)); vals
  
typeof(I).isAssignableFrom(typeof(A)); waar
typeof(I).isAssignableFrom(typeof(B)); waar
typeof(B).isSubClassOf(typeof(I)); vals
  
typeof(A).isAssignableFrom(typeof(A)); waar
typeof(A).isSubClassof(typeof(A)); vals
  
typeof(A).isAssignableFrom(typeof(B)); waar
typeof(A).isSubClassof(typeof(B)); vals
  
typeof(B).isAssignableFrom(typeof(A)); vals
typeof(B).isSubClassof(typeof(A)); waar






Vorig:.NET Core tijdstempelconversie (10-bits)
Volgend:EF Core pit: DbContextPool veroorzaakt uitputting van databaseverbindingen in de pool.
 Huisbaas| Geplaatst op 19-03-2021 13:39:47 |
Krijgt een object dat een generieke basisklasse erft

Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com